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

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

Здравствуйте, Nikvic!
Спасибо Вам за помощь! Надеюсь, я еще не надоел? :)
А Remained формируется каждый раз при запуске алгоритма (при нажатии на кнопку "Пуск алгоритма"):
...
for i:=1 to Size do Remained[i]:=i;
...
TotalPrice я исправил на Double (все-таки и копейки надо учитывать:-).
Чтобы удалить выбранный город, я сдвигаю массив влево, начиная со следующего после удаляемого, а последний элемент обнуляю:
for ind:=gen to Size-1 do
Remained[ind]:=Remained[ind+1];
Remained[Size]:=0;
Т.о., в итоге получаю: например, (1,3,4,5,0), если выбран 2-й город; (3,4,5,0,0), если после этого выбрали 1-й и т.д.
С 0 начинаю, т.к. в реализации GeneBase нумерация индексов генов также с 0.
Может, проблема неоптимальности в том, что в фитнесс-функции слишком искажаются полученные алгоритмом значения генов (все-таки, много делаю всяких преобразований)? Но без этого сложно обойтись. Я читал, что в моей задаче можно использовать т.н. "перечислимые хромосомы с уникальными генами", но нигде ничего конкретного по этому вопросу не нашел...