void test_my_sum_ones() { int my_array[] = {1,1,1,1,1,1,1,1}; //my_sum is part of sum.c int result = my_sum(my_array, 8); int expected_result = 8; CMINU_ASSERT_EQUAL_INT("my_sum with array of one's", result, expected_result); }
void test_my_sum_incr() { int my_array[] = {1,2,3,4,5,6,7,8}; //my_sum is part of sum.c int result = my_sum(my_array, 8); int expected_result = 36; CMINU_ASSERT_EQUAL_INT("my_sum with array of incrementing values", result, expected_result); }
bool my_RobustNormalFit(vector<double> &x,double *mu,double *sigma,double *PW) { size_t n=x.size(); *mu=my_mean(x); *sigma=my_STD(x,*mu); double a=my_min(x); double b=my_max(x); double alim=*mu-2*(*sigma); double blim=*mu+2*(*sigma); double L=alim-a+b-blim; double K=b-a; if(L<=0) return false; size_t deltn=n-my_count(x,alim,blim); double PW2=K*deltn/(L*n); double PW1=1-PW2; double muold=*mu; double sigmaold=*sigma; double e=1; int iter=0; double *PWP1,*PWAll; PWP1=new double[n]; PWAll=new double[n]; size_t i; while(e>0.0001) { for(i=0;i<n;i++) { PWP1[i]=PW1*normpdf(x[i],muold,sigmaold); PWAll[i]=PWP1[i]+PW2/K; PWP1[i]=PWP1[i]/PWAll[i]; } PW1=my_sum(PWP1,n); *mu=0; for(i=0;i<n;i++)*mu+=PWP1[i]*x[i]; *mu/=PW1; *sigma=0; for(i=0;i<n;i++)*sigma+=PWP1[i]*(x[i]-muold)*(x[i]-muold); *sigma=sqrt(*sigma/PW1); PW1=PW1/n; PW2=1-PW1; e=fabs(*sigma-sigmaold)+fabs(*mu-muold); muold=*mu; sigmaold=*sigma; iter=iter+1; if(iter>100) break; } delete []PWP1; delete []PWAll; return true; }
int main() { int a[] = { 1, -2, 3, 10, -4, 7, 2, -5 }; int i = 0; int j = 0; std::cout << my_sum(a, sizeof(a)/ sizeof(int), i, j) << std::endl; for (int m = i; m < j; m++) { std::cout << a[m] << " "; } std::cout << std::endl; getchar(); return 0; }
double MyGene::evaluate(MyGP &gp, string id, string className = "", int graphId){ double returnValue = 0.0; if (isFunction()) { switch (node->value()) { case SUM: returnValue = my_sum(NthMyChild(0)->evaluate(gp, id, className) , NthMyChild(1)->evaluate(gp, id, className)); break; case SUB: returnValue = my_sub(NthMyChild(0)->evaluate(gp, id, className), NthMyChild(1)->evaluate(gp, id, className)); break; case MULT: returnValue = my_mult(NthMyChild(0)->evaluate(gp, id, className), NthMyChild(1)->evaluate(gp, id, className)); break; case DIV: returnValue = my_div(NthMyChild(0)->evaluate(gp, id, className),NthMyChild(1)->evaluate(gp, id, className)); break; case LOG: // log de tree0 na base tree1 returnValue = my_div(my_log(NthMyChild(0)->evaluate(gp, id, className)), my_log(NthMyChild(1)->evaluate(gp, id, className))) ; break; case POW: // pow de tree0 na base tree1 returnValue = my_pow(NthMyChild(0)->evaluate(gp, id, className), NthMyChild(1)->evaluate(gp, id, className)) ; break; default: printf("Funcao: %c", node->value()); GPExitSystem ((char*) "MyGene::evaluate", (char*)"Undefined node value (function)."); } } if (isTerminal()) { switch(node->value()) { case DF_PER_TERM: returnValue = 1.0 + my_log(stats->getDFperTerm(id)); break; case DF_PER_CLASS: returnValue = 1.0 + my_log(stats->getDFperClass(id, className)); break; case TF_PER_TERM: returnValue = 1.0 + my_log(stats->getTFperTerm(id)); break; case TF_PER_CLASS: returnValue = 1.0 + my_log(stats->getTFperClass(id, className)); //bao! break; case AM: returnValue = stats->getAM(id, className); break; case MAX_AM: returnValue = stats->getMaxAM(id); break; case DOMINANCE: returnValue = stats->getDominance(id, className); break; case MAX_DOMINANCE: returnValue = stats->getMaxDominance(id); break; case PROB_COND: //esta igual ao AM! returnValue = my_div(stats->getTFperClass(id, className) , stats->getTFperTerm(id)); //versao 2: //returnValue = ( stats->getTFperClass(id, className) / ( stats->getSumTF() + 1.0)); //suavizada //returnValue /= ( stats->getSumTFperClass(className) + 1.0) / (stats->getSumTF() + 1.0 );//suavizada //versao 3: usada na dissertacao // returnValue = stats->getTFperClass(id,className)/ stats->getSumTFperClass(className); break; case PROB_COND_NEG: //returnValue = my_div(stats->getTFperClass(id, className) , stats->getTFperTerm(id)); returnValue = 1.0 - my_div(stats->getTFperClass(id, className) , stats->getTFperTerm(id)); break; case GINI: returnValue = stats->getGini(id); break; case IG: returnValue = stats->getIG(id, className); break; case MAX_IG: returnValue = stats->getMaxIG(id); break; case OR: returnValue = stats->getOR(id, className); break; case MAX_OR: returnValue = stats->getMaxOR(id); break; case IDF: //returnValue = stats->getIDFclass(id, className); returnValue = stats->getIDF(id); break; case TFIDF: returnValue = stats->getTFIDF(id, className); break; case MAX_TFIDF: returnValue = stats->getMaxTFIDF(id); break; case TFICF: returnValue = stats->getTFICF(id, className); break; case MAX_TFICF: returnValue = stats->getMaxTFICF(id); break; case CTD: returnValue = stats->getCTD(id, className); break; case MAX_CTD: returnValue = stats->getMaxCTD(id); break; case GSS: returnValue = stats->getGSS(id, className); break; case MAX_GSS: returnValue = stats->getMaxGSS(id); break; case CHI: returnValue = stats->getCHI(id, className); break; case MAX_CHI: returnValue = stats->getMaxCHI(id); break; case CC: returnValue = stats->getCC(id, className); break; case MAX_CC: returnValue = stats->getMaxCC(id); break; case CE: returnValue = stats->getCE(id); break; case NEIGHBORHOOD1: returnValue = stats->getNeighborhoodSize1(id,className,graphId); break; case NEIGHBORHOOD2: returnValue = stats->getNeighborhoodSize2(id,className,graphId); break; case NEIGHBORHOOD3: returnValue = stats->getNeighborhoodSize3(id,className,graphId); break; case HUBSCORE: returnValue = stats->getHubScore(id, className, graphId); break; case AUTHORITY: returnValue = stats->getAuthority(id, className, graphId); break; case EIGENVECTOR: returnValue = stats->getEigenVectorCentrality(id, className, graphId); break; case CLOSENESS: returnValue = stats->getCloseness(id, className, graphId); break; case STRENGTH: returnValue = stats->getStrength(id, className, graphId); break; case CONSTRAINT: returnValue = stats->getConstraint(id, className, graphId); break; case PAGERANK: returnValue = stats->getPageRank(id, className, graphId); break; case BETWEENNESS: returnValue = stats->getBetweenness(id, className, graphId); break; case BIBCOUPLING: returnValue = stats->getBibCoupling(id, className, graphId); break; case COCITATION: returnValue = stats->getCoCitation(id, className, graphId); break; case JACCARDSIMILARITY: returnValue = stats->getJaccardSimilarity(id, className, graphId); break; case DICESIMILARITY: returnValue = stats->getDiceSimilarity(id, className, graphId); break; case INVERSELOGSIMILARITY: returnValue = stats->getInverseLogSimilarity(id, className, graphId); break; case AVGNEIGHBORHOODDEGREE: returnValue = stats->getAvgNearstNeighborDegree(id, className, graphId); break; case NUM1: returnValue = 1.0; break; case NUM2: returnValue = 2.0; break; case NUM3: returnValue = 3.0; break; default: cout << " Terminal: " << node->value() << endl; GPExitSystem ((char*)"MyGene::evaluate",(char*) "Undefined node value (terminal)."); } } if(isnan(returnValue)){ cerr<<"Not a number found! Stop it!"<<endl; cerr<<"Valor do nodo = " << node->value()<<endl; returnValue=0; //exit(-1); } //DEBUG(cout<<" valor = "<<returnValue <<endl);; return returnValue; }