Pull to refresh

Comments 3

UFO just landed and posted this here

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;
}
}

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

Sign up to leave a comment.

Articles