soufianee | ce dessus le code de la classe à partir de quelle généré cet erreur :
Code :
- #ifndef FUZZIFICATION_H
- #define FUZZIFICATION_H
- #include "Tlist.h"
- #include "Matrice.h"
- #include "FCM.h"
- #include "RCGA.h"
- class Fuzzification
- {
- private:
- cl_Lst<double> donnee;
- double *centre;
- Matrice u;
- int nbrcentre;
- int nbrdonnee;
- FCM *fcm;
- RCGA *rcga;
- double critere;
- int m;
- public:
- Fuzzification(void);
- Fuzzification(Fuzzification& );
- Fuzzification(cl_Lst<double>&,int);
- ~Fuzzification(void);
- void setFcm(FCM *);
- void setRcga(RCGA *);
- int getNbrcentre();
- int getNbrdonnee();
- double getCritere();
- double getCentre(int);
- double getU(int,int);
- void operator=(Fuzzification& );
- int runFcm();
- double calcj(double,double,double,double);
- double calculCout();
- double minCentre();
- void valider();
- void runRCGA();
- };
- #include "Fuzzification.h"
- Fuzzification::Fuzzification(void)
- {
- m=2;
- nbrcentre=0;
- nbrdonnee=0;
- }
- Fuzzification::Fuzzification(cl_Lst<double>& l,int nc)
- {
- m=2;
- nbrdonnee=l.size();
- nbrcentre=nc;
- donnee=l;
- centre=new double[nbrcentre];
- Matrice m(nbrdonnee,nbrcentre);
- u=m;
- }
- Fuzzification::Fuzzification(Fuzzification& f)
- {
- m=2;
- nbrdonnee=f.getNbrdonnee();
- nbrcentre=f.getNbrcentre();
- u=f.u;
- centre=f.centre;
- donnee=f.donnee;
- }
- Fuzzification::~Fuzzification(void)
- {
- delete [] centre;
- delete &u;
- delete &donnee;
- }
- void Fuzzification::setFcm(FCM *f)
- {
- fcm=f;
- }
- void Fuzzification::setRcga(RCGA* r)
- {
- rcga=r;
- }
- int Fuzzification::getNbrcentre()
- {
- return nbrcentre;
- }
- int Fuzzification::getNbrdonnee()
- {
- return nbrdonnee;
- }
- double Fuzzification::getCritere()
- {
- return critere;
- }
- double Fuzzification::getCentre(int i)
- {
- return centre[i];
- }
- double Fuzzification::getU(int i,int j)
- {
- return u(i,j);
- }
- void Fuzzification::operator=(Fuzzification &f)
- {
- nbrdonnee=f.getNbrdonnee();
- nbrcentre=f.getNbrcentre();
- u=f.u;
- centre=new double[nbrcentre];
- for(int i=0;i<nbrcentre;i++)
- {
- centre[i]=f.getCentre(i);
- }
- donnee=f.donnee;
- }
- int Fuzzification::runFcm()
- {
- fcm->initCentre(centre,nbrcentre,donnee.getMin(),donnee.getMax());
- fcm->calculDegres(donnee,centre,nbrcentre,u,m);
- return fcm->fcmProcessus(donnee,centre,nbrcentre,u,m);
- }
- void Fuzzification::runRCGA()
- {
- rcga->initChr(nbrcentre,centre,donnee.getMin(),donnee.getMax());
- rcga->calcFitness(donnee);
- rcga->sortChromosome();
- rcga->calcPrportion();
- rcga->sortAsProportion();
- rcga->crossover();
- }
- double Fuzzification::calcj(double u,double m,double x,double c)
- {
- double p=pow(u,m);
- double val=pow(fabs((x-c)),2);
- return p*val;
- }
- double Fuzzification::calculCout()
- {
- double som=0;
- double som2=0;
- for (int j=0;j<nbrcentre;j++)
- {
- som=0;
- for(int i=0;i<nbrdonnee;i++)
- {
- som+=pow(u(i,j),m)*pow(fabs(donnee[i]-centre[j]),2);
- }
- som2+=som;
- }
- return som2;
- }
- double Fuzzification::minCentre()
- {
- double min=fabs(centre[0]-centre[1]);
- double temp;
- for(int i=0;i<nbrcentre;i++)
- {
- for(int j=(i+1);j<nbrcentre;j++)
- {
- temp=fabs(centre[i]-centre[j]);
- if(temp<min) min=temp;
- }
- }
- return pow(min,2);
- }
- void Fuzzification::valider()
- {
- critere=calculCout()/(nbrdonnee*minCentre());
- }
- #endif /* FUZZIFICATION_H */
|
|