S
sargo
Здравствуйте всем!
Помогите пожалуйста описанием функции Select_1 в процедуре Select на языке Паскаль.
Есть процедура select из программы генетического алгоритма по одноточечному скрещиванию и инверсионной мутации. ЗАДАЧА УЖЕ РЕШЕНА.
Но преподаватель мне дала дополнительный вопрос:
- опишите назначение функции select_1 Вашей программы и как она работает?
А я в этой программе ничего не смыслю.
Можете мне в этом помочь: просто описать что делает функция Select_1 и построчно прокомментировать её?
Помогите пожалуйста описанием функции Select_1 в процедуре Select на языке Паскаль.
Есть процедура select из программы генетического алгоритма по одноточечному скрещиванию и инверсионной мутации. ЗАДАЧА УЖЕ РЕШЕНА.
Но преподаватель мне дала дополнительный вопрос:
- опишите назначение функции select_1 Вашей программы и как она работает?
А я в этой программе ничего не смыслю.
Можете мне в этом помочь: просто описать что делает функция Select_1 и построчно прокомментировать её?
Код:
{
Отбор претендентов на скрещивание
}
Procedure select;
Var ipick:integer;
{
Перемешивание популяции
}
Procedure shuffle(var pop:population);
Var
i, j: integer;
ind0: individual;
Begin
for i := popsize downto 2 do begin
j:= random(i-1)+1;
ind0:=pop[i];
pop[i]:=pop[j];
pop[j]:=ind0;
end;
End;
{
Выборка
}
Function select_1:integer;
Var j1, j2, m: integer;
Begin
{
если ipick больше количества индивидов в популяции, то необходимо перемешать ее
}
if (ipick>popsize) then begin
shuffle(oldpop);
ipick:=1
end;
j1:=ipick;
j2:=ipick+1;
if (oldpop[j2].fitness<oldpop[j1].fitness) then
m:=j2
else
m:=j1;
ipick:=ipick+2;
select_1:=m;
End;
Var j: integer;
Begin
ipick:=1;
for j:=1 to popsize do begin
intpop[j]:=oldpop[select_1];
end;
oldpop:=intpop;
End;