Nie bardzo wiedziałem jak nazwać temat, gdyż mam dość nietypowy problem.
Napisałem algorytm, który znajduje rozwiązanie dla problemu komiwojażera. Algorytm szukający rozwiązanie działa w pętli while, pseudokod wygląda to tak
while (kryterium_spełnione)
{
losujRozwiazanie
sprawdzCzyNoweRozwiazanieJestLepsze
JesliLepszeZapiszDoTablicy
}
wyswietlRozwiazanie
Problem w tym, że algorytm nie podaje znalezionego rozwiazania tylko wszystkie elementy tablicy się zerują ALE jeśli do algorytmu dodać wyswietlanie wszystkich znalezionych rozwiazan w petli while to na koncu wyswietli pożądane rozwiazanie. Kod programu wygląda tak:
while ( ((koniec-start)/60000.0) < time ) // dopóki czas wykonywania poniżej time
{
k0=rand()%(N-1) + 1; // losuje liczbę w przedziale od 0 do N-1
swap(k0, k0+1, perm);
obnizTabu();
if (LT[k0][k0+1]==0){
kopiuj(perm, bestSolution); // jesli nie jest na liscie Tabu dodaj jako rozwiazanie
aktualizacjaLT(k0, k0+1, czasT);
}
else if (liczKoszt(perm) < liczKoszt(bestSolution) ){
kopiuj(perm, bestSolution);
}
koniec = clock();
[b][size=150] cout << liczKoszt(bestSolution) << endl; // jeśli to usunę to poniżej w tablicy rozwiazan są same zera[/size][/b]
i++;
}
cout << "kryterium dla bestSolution wynosi " << liczKoszt(bestSolution) << endl;
Kto ma pomysł o co chodzi?