Как стать автором
Обновить

Комментарии 3

НЛО прилетело и опубликовало эту надпись здесь

Упс. Увлёкся.

https://habr.com/ru/post/500994/#:~:text=// Объявляем переменную для,i)%3B%0A%09%09break%3B%0A%09%7D%20%0A%7D

Тут Вы берете и по очереди проверяете или же муравей по очереди "смотрит" пути, если рандом сработает то он идет по этому путю. Если 100 путей, то вероятность что он дойдет дойдет до 90-го очень мала. Нужно так чтобы муравей сразу "смотрел" на все пути разом.


//функция getChooseOfAnt(int currentPos)
double summOfWeights = 0; for (int i = 0; i < main.myTowns.size()-1; i++) { summOfWeights += main.matrixF[startPoint][i]; } double probability=uniform(0,summOfWeights); summOfWeights = 0; for (int i = 0; i < main.myTowns.size()-1; i++) { summOfWeights += main.matrixF[startPoint][i]; if (probability < summOfWeights){ return i; } } return 0;

//переход
for (int i=0; i<main.myTowns.size(); i++) {
int way = getChooseOfAnt(currentPos);
if (isVisited.indexOf(way)==-1) {
// Если да то отправляем муравья к i му городу
this.moveTo(main.myTowns.get(way));
// Обновляем значение протяженности пройденного маршрута
distance=distance+this.distanceTo(main.myTowns.get(i));
// Добавляем город в список городов в которых муравей уже успел побывать
isVisited.add(way);
//Обновляем значение феромона
main.matrixF[currentPos][i]=main.matrixF[currentPos][i]+0.05;//значение феромона 0.05
break;
}
}

Так хороший туториал. Есть неточности, если прямо идти по шагам, компилятор ругается, нужно это подправлять, но все равно спасибо за материал. Спасибо, что продвигаете иммитационное моделирование.

Зарегистрируйтесь на Хабре, чтобы оставить комментарий

Публикации