pb algorithme génétique - C - Programmation
Marsh Posté le 28-04-2011 à 09:46:39
Est-ce que tu as essayé de lancer ton programme avec Valgrind ?
Pour les problèmes d'allocation / libération de mémoire, cet outil est top !
Marsh Posté le 28-04-2011 à 10:26:54
struct coup{
int position;
int couleur;
int retournement[DIRECTIONS];
};
typedef struct coup * coup;
J'ai mal aux cheveux.
Marsh Posté le 28-04-2011 à 17:30:52
GrosBocdel a écrit : struct coup{ |
+1
Marsh Posté le 28-04-2011 à 19:09:42
Pour avoir essayé de débugger ton code, tout ce que j'ai pu voir c'est que tu accèdes à de la mémoire non initialisée, mémoire qui sera utilisée comme indice pour un tableau => seg fault. Valgrind permet effectivement de se rendre compte de ce genre de chose très rapidement.
GrosBocdel a écrit : struct coup{ |
C'est quoi le problème ?
Marsh Posté le 28-04-2011 à 19:43:14
tpierron a écrit : Pour avoir essayé de débugger ton code, tout ce que j'ai pu voir c'est que tu accèdes à de la mémoire non initialisée, mémoire qui sera utilisée comme indice pour un tableau => seg fault. Valgrind permet effectivement de se rendre compte de ce genre de chose très rapidement. |
tpierron a écrit : |
typedef struct coup * coup;
coup est un pointeur sur coup;
Ca me fait mal.
après on se retrouve avec des :
coup meilleur_coup=(coup)malloc(sizeof(struct coup));
bon bah coucou alors!
edit: en tout cas, g++ a la gentillesse de refuser de compiler ça.
Marsh Posté le 29-04-2011 à 00:17:26
c'est vrai que c'était pas malin de le faire comme ça. Je pensais pouvoir m'en sortir avec des free(coups) mais en fait non.
du coup je me suis résolue à changer la structure et à mettre coup en structure et non en pointeur et effectivement ça marche très bien maintenant.
merci pour vos réponses
Marsh Posté le 29-04-2011 à 00:19:28
enfin il a fallu qd même changer qques fonctions pour que ça fonctionne pour ceux qui voudrait essayer.
Marsh Posté le 27-04-2011 à 23:38:14
Bonjour,
je doit bientôt rendre un projet qui est de faire un jeu d'othello avec une intelligence artificiel.
pour cela on utilise une fonction alphabeta (amélioration de minmax) avec une fonction d'évaluation et un algorithme génétique pour optimiser les coefficients de cette fonction d'évaluation
seulement le problème c'est que l'algorithme génétique génère 10 générations puis fait une erreur de segmentation (normalement il devrais en générer 50). en tout cas il ne m'en fait que 10 sous ubuntu, sous windows il n'en fait même pas une.
je suppose que c'est parce qu'on a pas assez libéré la mémoire alloué pourtant on l'a libéré chaque fois que c'était possible sauf à un endroit ou ça me fait une erreur de segmentation si je le rajoute pourtant pr moi c'est là qu'il doit être. (c'est le free qui est en commentaire à la fin d'alphabeta)
voila les lien pour accéder au fichiers de codes :
pour avoir tous les fichiers et pouvoir essayer de compiler :
https://rapidshare.com/files/459497247/othello_IA.zip
juste la fonction Alphabeta où je n'arrive pas à rajouter le free sans que ça plante :
https://rapidshare.com/files/459497291/alphabeta.c
merci d'avance pour votre aide.