Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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);
}
Ejemplo n.º 3
0
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;
}
Ejemplo n.º 4
0
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;
}
Ejemplo n.º 5
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;
}