А53 Поиск кратчайшего пути алгоритмами муравьиного обхода и облета бабочками

Модель состоит из 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
boolean[punto.size()];

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

Для реализации муравьиного алгоритма в программе были задействованы

  1. Функции,
  2. Переменные,
  3. Диаграммы действий
  4. Наборы данных

Все точки, для которых ищется кратчайший путь, содержаться в популяции агентов punto

guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x