typedef struct{
int *sols;
int rest;
int fitness;
int num;
struct lista* next;
}lista;
lista* gere_lista(lista *solucoes, int *sol, int *grafo, int objs, int rests){
int i;
int *nova_sol;
lista *temp = solucoes;
nova_sol = malloc(sizeof(int)*objs);
nova_sol = update_sol(sol, nova_sol, objs);
for(i=0; i<objs; i++){
nova_sol = gera_vizinho3(nova_sol, i);
temp->sols = malloc(sizeof(int)*objs);
temp->sols = update_sol(nova_sol, temp->sols, objs);
temp->rest = calcula_restricoes(nova_sol, grafo, objs, rests);
temp->fitness = calcula_max(nova_sol, grafo, objs);
temp->num = i;
temp = temp->next;
}
return solucoes;
}
int* pesquisa_tabu(int sol[], int *grafo, int objs, int rests, int num_iter){
int fitness, fitness_viz, i, memoria[objs*2/8];
lista *solucoes, *temp;
solucoes = malloc(sizeof(lista));
temp = solucoes;
for(i=1; i<objs; i++){
temp->next = malloc(sizeof(lista));
}
temp->next = NULL;
solucoes = gere_lista(solucoes, sol, grafo, objs, rests);
return sol;
}
Ich versuche, einen Tabu-Suchalgorithmus zu meiner Schulaufgabe zu machen, aber es funktioniert nicht wirklich. Dieser Code soll eine verknüpfte Liste mit der gleichen Anzahl von Links wie die Objekte in der Funktion pesquisa_tabu erstellen, dann generiert er die gleiche Nummer in den Nachbarn und fügt jedem Link einen Nachbarn hinzu, um dann alle Informationen in der pesquisa_tabu Funktion. Und ich finde nicht, was in diesem Code falsch ist, ist es immer am zweiten Iteration abstürzt ...Tabu Suchalgorithmus stürzt immer auf der zweiten Iteration ab
Ihr for-Schleife ist falsch, sind die Zuweisung Sie nur Speicher auf den gleichen temp-> weiter über und über, und legen Sie es richtig auf null nach – Tyler
_Questions Debugging Hilfe suchen (warum nicht dieser Code funktioniert ?) muss das gewünschte Verhalten, ein spezifisches Problem oder einen Fehler und den kürzesten Code enthalten, der notwendig ist, um es in der Frage selbst zu reproduzieren. Fragen ohne eine klare Problemstellung sind für andere Leser nicht nützlich. Siehe: Wie erstelle ich ein [mcve] ._ –