Вход
Регистрация

Re(2): генетические алгоритмы, задача о коммивояжере

Спасибо большое за совет! Но я вроде бы нечто вроде этого и делал. Вот кусок кода (фитнесс-функция). Надеюсь, поймете (tour - итоговый маршрут, Remained - массив оставшихся городов). Как же мне поступить с этим всем?

function TMainForm.GA1GetSutability(
Chromosome: TChromosome): Double;
var
num,ind: Word;
gen: Integer;
TotalPrice: LongWord;
begin
// рассчитываем приспособленность
TotalPrice:=0;
for num:=1 to Size do
begin
if RemainedCities=0 then break;
gen:=abs(Chromosome.GeneAsInteger[num-1]);
gen:=(gen mod RemainedCities)+1;
tour[Index]:=Remained[gen];//Заносим выбранный город в массив
inc(Index); //увеличиваем на 1 счетчик массива выбранных городов
dec(RemainedCities); //уменьшаем на 1 число оставшихся городов
for ind:=gen to Size-1 do
Remained[ind]:=Remained[ind+1]; //убираем выбранный город из массива оставшихся городов
Remained[Size]:=0;
end;
for ind:=1 to Size-1 do
TotalPrice:=TotalPrice+cities[tour[ind],tour[ind+1]];
TotalPrice:=TotalPrice+cities[tour[Size],tour[1]];
stxTarget.Caption:=FloatToStr(TotalPrice);
Result:=TotalPrice;
end;