Модель состоит из 4 типов агентов
Главный из них — тип агента Main , который содержит все остальные
Тип агента Punto –является классом (образцом)для всех точек(вершин), для которых ищется кратчайший путь.
Тип агента Punto содержит в себе класс Enlance, содержащий все расстояния до остальных точек
Класс Hormiga считает минимальный путь за текущую интерацию
Запуск муравьиного поиска кратчайшего пути и облета всех точек бабочками осуществляется по нажатию на кнопку «START».
В этой кнопке содержатся:1) процедура облета бабочкой всех вершин, подсчёта пройденного пути, вывода результатов данного алгоритма в графической и числовой форме
double dist=25000000; int j=0; int d=0; double vsego=0; double x=punto.get(0).x; double y=punto.get(0).y; boolean[] пройдена=new for (int i=0;i<puntos;i++) пройдена[i]=false; пройдена[0]=true; for (int i=0;i<puntos-1;i++) { j=0; dist=25000000; for (Punto p:punto) { if ((!пройдена[p.getIndex()]) &&(dist > sqrt(pow(p.x-x,2)+pow(p.y-y,2)))) {dist=sqrt(pow(p.x-x,2)+pow(p.y-y,2)); j=p.getIndex(); } } vsego=vsego+dist; ShapeLine newline=new ShapeLine(); newline.setColor(yellow); newline.setX(x); newline.setY(y); newline.setLineWidth(1); newline.setDx(punto.get(j).x-x); newline.setDy(punto.get(j).y-y); presentation.add(newline); пройдена[j]=true; y=punto.get(j).y; x=punto.get(j).x; dataset.add(d, vsego); d++; } ShapeLine newline=new ShapeLine(); newline.setColor(yellow); newline.setX(x); newline.setY(y); newline.setLineWidth(1); newline.setDx(punto.get(0).x-x); newline.setDy(punto.get(0).y-y); presentation.add(newline); vsego=vsego+sqrt(pow(punto.get(punto.size()-1).x-punto.get(0).x,2)+pow(punto.get(punto.size()-1).y-punto.get(0).y,2)); text23.setText(round(vsego)); |
2. код инициализации муравьиного алгоритма
start=true; distancia_optima=Double.POSITIVE_INFINITY; Crear_hormigas(); |
Для вывода графика изменения пройденного пути бабочкой в программу был добавлен набор данных dataset
Для реализации муравьиного алгоритма в программе были задействованы
- Функции,
- Переменные,
- Диаграммы действий
- Наборы данных
Все точки, для которых ищется кратчайший путь, содержаться в популяции агентов punto