![]() |
| Программирование С++, Pascal, Delphi и т.п. |
Похожие темы
|
||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Информатика 3 | Дядя Слава | Прочее | 3 | 18.03.2008 19:49 |
| информатика | valer | Прочее | 0 | 20.10.2004 19:40 |
| Информатика-1 | ZZZ | Программирование | 4 | 27.07.2004 21:50 |
| Информатика 2 | Aid$ | Программирование | 1 | 13.06.2004 15:18 |
| информатика, КСЕ | Nastasia | Прочее | 2 | 26.04.2004 10:00 |
![]() |
|
|
LinkBack | Опции темы |
| Пользователь сказал cпасибо: |
Dimmchik (13.05.2011)
|
| Поддержите наш проект, нажмите на любой рекламной ссылке. | |
| Реклама на форуме | |
|
Коммерсант
Доп. информация
![]() Регистрация: 27.01.2007 Специальность: 000000
Семестр: Абитуриент
Цифры пароля: 00
Город: Россия
Сообщений: 203
Сказал(а) спасибо: 8
Поблагодарили 20 раз(а) в 17 сообщениях
Вес репутации: 61 ![]() |
{двухточечное скрещивание}
procedure crossover(var parent1, parent2, child1, child2:chromosome; flchrom:integer); var jcross, j:integer; begin if flip(pcross) then begin {Выполняется скрещивание с вероятностью pcross} jcross:=rnd(1,flchrom-1); {Определение точки скрещивания в диапазоне между 1 и l-1} ncross:=ncross + 1; {Увеличение счетчика скрещиваний} end else jcross:=flchrom; {2-х точечная мутация} mutation(parent1,flchrom); mutation(parent2,flchrom); {первая часть обмена , 1 to 1 and 2 to 2} for j := 1 to jcross do begin child1[j]:=parent1[j]; child2[j]:=parent2[j]; end; if jcross<>flchrom then {если точка скрещивания равна flchrom--скрещивание не происходит} for j := jcross+1 to flchrom do begin {вторая часть обмена, 1 to 2 and 2 to 1} child1[j]:=parent2[j]; child2[j]:=parent1[j]; end; end;
__________________
Информационные технологии :: Стастистика:: Эконометрика |
||
|
|
|
|
Новичок
Доп. информация
![]() Регистрация: 11.05.2011 Специальность: 000000
Семестр: 3
Цифры пароля: 00
Город: Красноярск
Сообщений: 5
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0 ![]() |
Да но для того что бы выполнить mutation(parent1,flchrom); должна быть описана функция function mutation с алгоритмом 2-ух точечной мутацией. Конечно это если я правильно всё понимаю.
|
||
|
|
|
|
Новичок
Доп. информация
![]() Регистрация: 11.05.2011 Специальность: 000000
Семестр: 3
Цифры пароля: 00
Город: Красноярск
Сообщений: 5
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0 ![]() |
Я склепал вот такой код программы равномерное скрещивание и и 2-ух точечная мутация, на ваш профессиональный взгляд он правильный или бред сумасшедшего! Прошу строго не судить я обучаюсь дистанционно и мне pascal, а точнее генетические алгоритмы сложно даются.
{2-х точечная мутация} function mutation (var child:chromosome; alleleval:allele; pmutation:real; var nmutation:Integer; flchrom:Integer):allele; var p,mutate : boolean; j1,j2 : integer; Begin mutate:=flip(pmutation); if mutate then begin repeat begin j1 := rnd(1, flchrom-1); j2 := rnd(1, flchrom-1); end; until j1<>j2; mutation := Not alleleval; p := child[j1]; child[j1] := child[j2]; child[j2] := p; nmutation := nmutation+1; end else mutation := alleleval; end; {Равномерное скрещивание и 2-ух точечная мутация} procedure crossover(var parent1,parent2,child1,child2:chromosome; flchrom:integer; Var ncross,nmutation,jcross:integer; Var pcross,pmutation:real); var j:integer; begin if flip(pcross) then begin for j:=1 to lchrom*dim do begin if flip(0.5) then begin child1[j]:=mutation(parent1, parent1[j], pmutation, nmutation, flchrom); child2[j]:=mutation(parent2, parent2[j], pmutation, nmutation, flchrom); end else begin child1[j]:=mutation(parent2, parent2[j], pmutation, nmutation, flchrom); child2[j]:=mutation(parent1, parent1[j], pmutation, nmutation, flchrom); end; end; end; end; |
||
|
|
|
|
Новичок
Доп. информация
![]() Регистрация: 08.03.2010 Специальность: 000000
Семестр: Абитуриент
Цифры пароля: 00
Город: Щелково
Сообщений: 6
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0 ![]() |
Всем доброго времени суток.
Прошу помощи по курсовому генетические алгоритмы, ну ни как не могу въехать в этот алгоритм , нужны примеры с двухточечным скрещиванием и инверсионной мутацией (вариант 4 но пойдут и другие варианты с такими-же условиями), кому не трудно скиньте на SerjWahs@yandex.ruЗаранее спасибо. |
||
|
|
|
|
Новичок
Доп. информация
![]() Регистрация: 08.03.2010 Специальность: 000000
Семестр: Абитуриент
Цифры пароля: 00
Город: Щелково
Сообщений: 6
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0 ![]() |
Кто нибудь поправьте если я не правильно понимаю двухточечное скрещивание и инверсионную мутацию.
|
||
|
|
|
|
Новичок
Доп. информация
![]() Регистрация: 08.03.2010 Специальность: 000000
Семестр: Абитуриент
Цифры пароля: 00
Город: Щелково
Сообщений: 6
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Вес репутации: 0 ![]() |
Цитата:
Вот этот код для инверсионной мутации? function mutation(alleleval:allele):allele; var mutate:boolean; begin mutate:=flip(pmutation); if mutate then mutation:=not alleleval else mutation:=alleleval; end; Но мутация же должна происходить после процедуры скрещивания, а в результате скрещивания получается два потомка и каждый подвергается мутации, тогда этот код программы надо применить к обоим потомкам или я не прав. |
|||
|
|
|
|
Коммерсант
Доп. информация
![]() Регистрация: 27.01.2007 Специальность: 000000
Семестр: Абитуриент
Цифры пароля: 00
Город: Россия
Сообщений: 203
Сказал(а) спасибо: 8
Поблагодарили 20 раз(а) в 17 сообщениях
Вес репутации: 61 ![]() |
Цитата:
{Равномерное скрещивание} procedure crossover(var parent1, parent2, child1, child2:chromosome); var j:integer; begin if flip(pcross) then begin for j:=1 to lchrom*dim do begin if flip(0.5)then begin child1[j]:=mutation(parent1[j]); child2[j]:=mutation(parent2[j]); end else begin child1[j]:=mutation(parent2[j]); child2[j]:=mutation(parent1[j]); end; end; end; end;
__________________
Информационные технологии :: Стастистика:: Эконометрика |
|||
|
|
|
| Пользователь сказал cпасибо: |
zasf30 (02.06.2011)
|
![]() |
| Метки |
| begin, вариант, должно, есть, информатика, чуть, этот |
| Здесь присутствуют: 1 (пользователей: 0 , гостей: 1) | |
| Опции темы | |
|
|