Генетические алгоритмы

Автор работы: Пользователь скрыл имя, 14 Ноября 2010 в 06:24, Не определен

Описание работы

Генетические алгоритмы в настоящее время широко используются для интеллектуальной обработки данных и решения задач оптимизации и поиска. Они успешно используются для решения ряда экономически значимых задач в бизнесе и инженерных разработках. Финансовые компании широко используют генетические алгоритмы для прогнозирования развития финансовых рынков.

Файлы: 1 файл

Курсовая работа_генетические алгоритмы.doc

— 358.50 Кб (Скачать файл)

     Что же касается недостатков, то в общем  случае генетические алгоритмы не находят оптимального решения очень трудных задач. Если оптимальное решение задачи (например, задача коммивояжера с очень большим числом городов) не может быть найдено традиционными способами, то и генетический алгоритм вряд ли найдет оптимум.

 

БИБЛИОГРАФИЧЕСКИЙ СПИСОК

 
  1. Вентцель  Е.С. «Исследование операций», - М.: 1972 г.
  2. «Генетические алгоритмы: почему они работают?»/, «Компьютерра», № 11, 1999
  3. «Генетические алгоритмы и машинное обучение»

http://www.math.tsu.ru/russian/center/ai_group/ai_collection/docs/faqs/ai/part5/faq3.html

  1. Исаев С. Популярно о генетических алгоритмах

www.algolist.manual.ru

  1. «Нейропроект. Аналитические технологии XXI века» http://www.neuroproject.ru/genealg.php#what
  2. Коршунов Ю.М. «Математические основы кибернетики. Для студентов вузов», - М.: 1987 г., стр. 67-89
  3. «Лекции по нейронным сетям и генетическим алгоритмам»

http://infoart.baku.az/inews/30000007.htm

  1. Струнков Т. «Что такое генетические алгоритмы?» www.neuroproject.ru/papers.htm
  2. Рутковская Д., Пилиньский М., Рутковский Л. «Нейронные сети, генетические алгоритмы и нечеткие системы»: Пер. с польск. И. Д. Рудинского. - М.: Горячая линия -Телеком, 2006. - 452 с: ил.
  3. «Факультет вычислительной математики и кибернетики МГУ (ВМиК)»

http://cmc.cs.msu.su/labs/lvk/materials/tez_sapr99_1.html

  1. «(EHIPS) Генетические алгоритмы»

 http://www.iki.rssi.ru/ehips/genetic.htm

  1. «Neural Bench Development»

http://www.neuralbench.ru/rus/theory/genetic.htm

  1. «SENN Генетические Алгоритмы»

http://fdmhi.mega.ru/ru/senn_ga.htm

ПРИЛОЖЕНИЕ  А

 

Программный код решения задачи коммивояжера с помощью генетических алгоритмов в Borland Delphi 6.0

Const //объявляем константу

x=5;

var

Form1: TForm1;

town: array [1..21,1..25] of string; // объявляем массив городов

implementation

{$R *.dfm}

procedure TForm1.N3Click(Sender: TObject); // выводит сообщение о выходе

const

mbYesNo = [mbYes, mbNo];

begin

if MessageDlg('Вы действительно хотите выйти?', mtConfirmation, mbYesNo, 0) = mrYes

then close;

end;

procedure TForm1.N2Click(Sender: TObject); // сообщение о программе

begin

ShowMessage('Демонстрация  задачи коммивояжёра, решенной с помощью генетических алгоритмов. Для учебного пособия "Генетические алгоритмы"!!!');

end;

procedure TForm1.Button1Click(Sender: TObject);

var i, j, k, a, b, s1, s2, p: integer;

begin

for i:=1 to x do

begin

StringGrid1.Cells[i,i]:='0'; //выводит в массиве «0» на пересечении [i, i]

for j:=1 to x do

StringGrid1.Cells[i,j]:=StringGrid1.Cells[j,i]; // расстояние [i, j]= [j, i]

еnd;

town[1,1]:='12345'; // создает начальную популяцию

a:=2; // выбор точки разрыва

for k:=1 to 4 do

begin // процедура скрещивания

town[1,a]:=town[1,a-1]; // выбираются особи из популяции

town[1,a][4]:=town[1,a-1][5]; // оператор кроссовера

town[1,a][5]:=town[1,a-1][4];

town[1,a+1]:=town[1,a-1]; // помещаем хромосому в новую популяцию

town[1,a+1][3]:=town[1,a-1][5]; // оператор кроссовера

town[1,a+1][5]:=town[1,a-1][3];

town[1,a+2]:=town[1,a+1]; // помещаем хромосому в новую популяцию

town[1,a+2][5]:=town[1,a+1][4]; // оператор кроссовера

town[1,a+2][4]:=town[1,a+1][5];

town[1,a+3]:=town[1,a+2]; // помещаем хромосому в новую популяцию

town[1,a+3][3]:=town[1,a+2][5]; // оператор кроссовера

town[1,a+3][5]:=town[1,a+2][3];

town[1,a+4]:=town[1,a+3]; // помещаем хромосому в новую популяцию

 town[1,a+4][5]:=town[1,a+3][4]; // оператор кроссовера

town[1,a+4][4]:=town[1,a+3][5];

 town[1,a+5]:=town[1,a+4]; // помещаем хромосому в новую популяцию

 town[1,a+5][5]:=town[1,a+4][2]; // оператор кроссовера

town[1,a+5][2]:=town[1,a+4][5];

 a:=a+6; // новая популяция всех допустимых решений

end;

a:=0; //нахождение оптимального решения, оценивание приспособленности каждой особи

s2:=9999999;

for i:=1 to 24 do

begin

s1:=0;

for p:=1 to x do

begin

a:=StrToInt(town[1,i][p]);

if p=5 then b:=StrToInt(town[1,i][p-4])

else b:=StrToInt(town[1,i][p+1]);

s1:=s1+StrToInt(StringGrid1.Cells[b,a]);

end;

if s1<s2 then

begin

s2:=s1;

town[2,1]:=town[1,i];

end;

end;

for i:=1 to 25 do

StringGrid2.Cells[1,i]:=town[1,i];

StringGrid2.Cells[2,1]:=IntToStr(s2);

Edit2.Text:=town[2,1]; //вывод оптимального решения

Edit1.Text:=IntToStr(s2); // вывод минимального расстояния

end;

procedure TForm1.Button3Click(Sender: TObject); // строим массив

var i,j: integer;

begin

StringGrid1.ColCount:=x+1;

StringGrid1.RowCount:=x+1;

StringGrid2.ColCount:=x+1;

StringGrid2.RowCount:=26;

for i:=1 to x do// массив для начальной популяции

for j:=1 to x do

StringGrid1.Cells[i,j]:='' ''; //для ввода значений расстояний

for i:=1 to x do

begin

StringGrid1.Cells[i,i]:='0';

StringGrid1.Cells[i,0]:=IntToStr(i);

StringGrid1.Cells[0,i]:=IntToStr(i);

StringGrid2.Cells[i,0]:=IntToStr(i);

end;

for i:=1 to x*2 do // массив для популяции нового поколения

StringGrid2.Cells[0,i]:=IntToStr(i);

end;

end.

Информация о работе Генетические алгоритмы