probleme de compilation-algorithme genetique-croisement-mutation
Bonjour
Vous constaterez que y'a des fonctions qui ont été traite dans le fichier "solv.cpp" et d'autres pas(pas encore nécessaire).....J'arrive pas à cerner le problème des erreurs que visual-studio m'affiche,j'ai réfléchi pendant un bon bout de temps ,mais rien trouvé
:triste:
Voici tous les fichiers du projet que j'ai crée:
******SOLVE.H*****
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| #ifndef DEF_SOLVEUR
#define DEF_SOLVEUR
#include <string>
class solveur
{
private:
string *popInit;
string *newPop;
double *note;
public:
solveur(string *pop, double *valeur);
~solveur();
void roulette(); //Sera appelée dans la fonction sélection
string *selection(double *not); //Renvoie les individus qui ont été sélectionnés avec la roulette par rapport à leurs notes
void setSelected(string *pop); // Remplie le tableau de la new pop sélectionnée
void croisement(string a,string b);
void mutation(string a);
void evolution(); // Cette fonction fera appel aux méthodes croisement() et mutation()
void setNewPop(); // Cette fonction sera appellée à la fin de l'évolution pour l'obtention d'une new pop
bool reEvaluation();
void reWrite(); // On réécrit les résultats dans un fichier texte pour avant de les repasser au module Evaluation
void selectRandom(); // Sélectionne aléatoirement par rapport au pourcentage
};
#endif |
*****SOLV.CPP*****
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
| #include <iostream>
using namespace std;
#include <string>
#include "solve.h"
/*long teste(double p)
{
double prob;
prob=(rand()/(double)RAND_MAX);
return( (prob<= p) ? 1 : 0);
}*/
solveur::solveur(string *pop, double *valeur)
{
int p;
p=(int)(sizeof popInit / sizeof *popInit);
pop=new string[p];
valeur=new double[p];
for(int i=0;i<p; i++)
{
popInit[i]=pop[i];
note[i]=valeur[i];
}
}
void solveur::roulette()
{
int inc=0,t,i=0;
double S=0.0;
t=(int) (sizeof popInit/ sizeof *popInit);
for (i = 0; i <t; i++)
{
//indice[i]=i;
S=S+note[i];
}
double r;
r=S*(rand()/(double)RAND_MAX );
t=(int) (sizeof popInit/ sizeof *popInit);
for (int j = 0; j<t; j++)
{
for (i = 0; i <t; i++)
{
i=rand()%t;
if (note[i]>r)
newPop[j]=popInit[i];
}
}
for (i = 0; i <t; i++)
{
cout<<""<<newPop[i]<<endl;
}
}
string* solveur::selection(double *not)
{
int t;
t=(int) (sizeof popInit/ sizeof *popInit);
string *popselect(0);
for (int i = 0; i <t; i++)
{
note[i]=not[i];
}
roulette();
for (int i = 0; i <t; i++)
{
note[i]=not[i];
popselect[i]=newPop[i];
}
return popselect;
}
void solveur::setSelected(string *pop)
{
int t;
t=(int) (sizeof popInit/ sizeof *popInit);
for (int i = 0; i <t; i++)
{
popInit[i]=pop[i];
}
roulette();
}
void croisement(string a, string b)
{
// taille de popInit:je sais pas pourquoi il marque cette erreur,alors qu'il est accepté ci-dessus!
string pc1, pc2;
long k, i;
int t;
t=(int) (sizeof popInit/ sizeof *popInit);
k=(rand()%4);
for (i = 0; i <t; i++)
{pc1[i] = a[i];pc2[i] =b[i];}
for (i =k; i<t; i++)
{pc1[i]= b[i];pc2[i] = a[i];}
for (i =k; i<t; i++)
{ a[i]=pc1[i];
b[i]=pc2[i];
}
} |
*********MON MAIN********
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| #include <iostream>
#include "solve.h"
using namespace std;
#include <ctime>
#include <string>
using namespace std;
void main()
{
string a="111111";
string b="1000101";
croisement(a,b);
system("pause");
} |
voici les erreurs que ça affiche après la compilation:
> solv.cpp
Citation:
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solv.cpp(90): error C2065: 'popInit' : identificateur non déclaré
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solv.cpp(90): error C2070: ''unknown-type'' : opérande sizeof non conforme
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solv.cpp(90): error C2065: 'popInit' : identificateur non déclaré
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solv.cpp(90): error C2070: ''unknown-type'' : opérande sizeof non conforme
1> main1.cpp
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(11): error C2143: erreur de syntaxe : absence de ';' avant '*'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(11): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(11): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(12): error C2143: erreur de syntaxe : absence de ';' avant '*'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(12): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(12): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(19): error C2061: erreur de syntaxe : identificateur 'string'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(22): error C2143: erreur de syntaxe : absence de ';' avant '*'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(22): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(22): error C4430: spécificateur de type manquant - int est pris en compte par défaut. Remarque : C++ ne prend pas en charge int par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(22): warning C4183: 'selection' : type de retour manquant ; fonction membre retournant 'int' prise par défaut
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(23): error C2061: erreur de syntaxe : identificateur 'string'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(24): error C2061: erreur de syntaxe : identificateur 'string'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\solve.h(25): error C2061: erreur de syntaxe : identificateur 'string'
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\main1.cpp(13): error C3861: 'croisement' : identificateur introuvable
1>d:\documents and settings\yorick\mes documents\visual studio 2010\projects\solv\solv\main1.cpp(22): fatal error C1071: fin de fichier inattendue dans un commentaire
1> Génération de code en cours...
========== Génération : 0 a réussi, 1 a échoué, 0 mis à jour, 0 a été ignoré ==========