Genetic-Comments

М.Ф. А. 29.02.2008 - 01:05

ГА

Добрый день Евгений! Написано неплохо, даже учитывая что переписываешь библиотечку уже раз второй-третий. Поймал пару удачных решений с точки зрения программного решения. Предложил бы дописать класс ГА для управления другими сущностями ГА, наверняка Вы уже об этом читали. Пример Есть несколько распараллеленных сущностей GAWorker, работающих с гаплоидными хромосомами, которые в свою очередь управляются сущностью GAManager. На каждом шаге популяции GAWorkerы отдают значения среднего фитнеса по их популяциям GAManagerу. После чего GAManager отбирает, скрещивает и мутирует "хромосомы" этих подчиненных ему GAWorkerов. Под "хромосомами" может пониматься вектор параметров, допустим, вероятности скрещивания, мутации, инверсии и т.д. К сожалению путной ссылки дать сейчас не могу, однако на всякий случай kot331107 at bk dot ru или ICQ 275733895 Удачных решений в будущем!

falko 12.05.2008 - 18:55

скрещивание

Думаю неплохо добавить метод для скрещивания по BitArray

Михаил 29.05.2008 - 22:07

представление

Когда-то делал такое на С++. Находил экстремум функции Розенброка и прочих функций. Для увеличения скорости работы можно использовать код Грея для представления значений особей. На студентческих примерах прирост скорости был даже очень неплохим.

Данная страничка полезная "вещь"... особенно для студентов.

Собственно и тема и задумка очень интересная.

Владислава 31.05.2009 - 12:17

Спасибо

Большое спасибо за статью и пример - очень помогло в написании курсового!

alex 14.08.2009 - 12:01

nuint.framework

скачал Ваш проект, но нету nuint.framework ccылки, и не компилится. что делать?

Jenyay 14.08.2009 - 12:04

Можете скачать nunit отсюда, но в проекте скорее всего придется изменить ссылки на него, потому что я там использовал еще старую версию.

А можно скомпилить все оставшиеся проекты вручную, если тесты не нужны.

alex 14.08.2009 - 18:47

ясно

понял, спасибо. Помогите выбрать целевую функцию для японского кроссворда...

Jenyay 14.08.2009 - 18:53

Не, здесь я не помощник. Про японские кроссворды я знаю только то, что они существуют. Да и не думаю, что целевую функцию для любого кроссворда можно быстро описать.

Можете написать свой вопрос на форуме, может быть там его прочтет тот, кто в этом разбирается.

tac 27.09.2009 - 06:43

Управление агентами

Возможно Вас заинтересует проект, который мы пытаемся начать http://ru.vlab.wikia.com/wiki/Управление_агентами

Jenyay 27.09.2009 - 09:37

tac, не до конца понял, что это за проект, но наверное что-то интересное. :)

molla 14.03.2010 - 22:30

nunit

скачал проект, установил nunit 2.5.3, указал ссылки nuint.framework, но не могу скомпилировать( может я что-то не так делаю? помогите пожалуйста

Jenyay 15.03.2010 - 20:18

molla, Напишите что за ошибки получаются.

Jenyay 15.03.2010 - 20:19

А можно вообще скомпилить без nunit. Отключите проект с тестами и все.

molla 16.03.2010 - 14:39

Ошибка с таким текстом:

A project with an Output Type of Class Library cannot be started directly.

In order to debug this project add an executable project to this solution which references the library project. Set the executable project as the startup project.

 16.03.2010 - 15:22

molla, это просто активный проект тот, который компилится в dll. Сделайте активным проект, который делает exe-ник.

molla 16.03.2010 - 16:38

спасибо)

QWet 03.04.2010 - 17:39

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

Jenyay 03.04.2010 - 17:42

QWet, если имеется в виду в этой библиотеке, то у класса Population есть свойство Species - это список, отсортированный по значению целевой функции. Первые элементы списка - это лучшие особи.

QWet 03.04.2010 - 17:52

имеется ввиду, чтобы на каждом поколении отбирать несколько лучших и с ними потом работать

Jenyay 03.04.2010 - 17:57

QWet, если честно, не понял вопрос. Вы имеете в виду вообще как понять какие виды лучше или в этой библиотеке?

Если "вообще", то надо смотреть значение целевой функции, по тому насколько это значение мало или велико (в зависимости от того какой экстремум ищется).

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

QWet 03.04.2010 - 17:59

пока спрашивал, разобрался) спасибо)

Jenyay 03.04.2010 - 18:02

Да не за что :)

QWet 05.04.2010 - 12:26

возник следующий вопрос: а можно ли запустить одновременно 2 или более потока вычислений, чтобы несколько графиков по каждой популяции на одном отображать?)

Jenyay 05.04.2010 - 21:34

QWet, так сходу малыми изменениями это сделать не удастся. Если эти графики не нужны именно в реальном масштабе времени, то можно по отдельности их посчитать, сохранить результаты в текстовый файл, а потом во внешней программе построить графики.

QWet 07.04.2010 - 01:21

спасибо за идею, попробую

Андрон 16.04.2010 - 15:11

Хороший пример по ГА

Только вопрос: почему в IntSpecies одни хромосомы Int32, а другие Int64?

Jenyay 16.04.2010 - 15:50

Андрон, сейчас я уже и сам не вспомню зачем так сделал. Возможно, просто для демонстрации того, что хромосомы могут быть разных типов.

Dart 12.05.2010 - 13:36

Такой вопрос. Если необходимо работать внутри protected override double CalcFinalFunc() с внешними объектами, как передать CalcFinalFunc() ссылку на этот объект.

Пытался через статические свойства класса,

result = ExternalClass.SomePropetry.QF(m_Chromosomes);

но тогда спустя несколько вызовов активатора в BaseDoubleSpecies<TSpecies> Cross(BaseDoubleSpecies<TSpecies> Species)

Other = (TSpecies)Activator.CreateInstance(typeof(TSpecies),
                    new object[] { chromosomes });

выбрасывает исключение

The exception that is thrown by methods invoked through reflection. This class cannot be inherited.

Хотя все входные параметры активатора в норме, все типы соответствуют. Убираешь ссылку на статическое свойство в CalcFinalFunc(), заменяя тривиальной функцией - всё начинает прекрасно работать.

 19.05.2010 - 02:44

Dart, для начала, m_Chromosomes - это массив

Posthuman 22.06.2010 - 15:03

как продвигается работа?

Jenyay 22.06.2010 - 15:32

Уу, работы полно.

Student 04.01.2011 - 16:24

статья очень интересная. спасибо :) подскажите, есть функция 0.5 * x1 * x3 - x2 * x3 + 0.4 * x3 как правильно задать для нее особь? пробовал на примере функции Шефеля, но нашёл правильный максимум только для х3 :(

Student 04.01.2011 - 18:27

разобрался, исследовав предыдущий пример. спс :)

Lessna 06.04.2011 - 20:45

Jenyay, огромное вам спасибо за код программы, вот только у меня есть к вам вопрос, я новичок в программировании и нуждаюсь в репетиторстве, есть ли такая возможность у Вас?

Jenyay 07.04.2011 - 14:47

Ну я могу отвечать на какие-то вопросы. Если что, пишите на jenyay.ilin@gmail.com или в одноименный jabber :)

mushroom 17.04.2011 - 15:22

огромное спасибо за статью и за код впринципе) но вот только начинаем разбираться с ГА и с их реализациями.. подскажите если не сложно, допустим у меня есть функция для которой мне нужно подобрать 4 коэффициента и заменив функцию f = a5 * X05 + a4 * X14 + a3 * X23 + a2 * X32 + a1 * X4 + a0 в проекте RealTest на свою, я получу нужные коэффициенты для своей функции? простите если вопрос глупый))

Jenyay 17.04.2011 - 16:01

По идее должны получить, если у Вас нет каких-то особенностей.

mushroom 17.04.2011 - 16:06

спасибо если вам интересно, то мы пытаемся реализовать вот это: http://www.duskyrobin.com/tpu/2006-07-00006.pdf

mushroom 17.04.2011 - 16:23

не могли бы вы что то подсказать или посоветовать ну или на крайняк пожелать удачи?)

Jenyay 17.04.2011 - 21:02

Ну удачи это как минимум. :) Интересная задача, хотя обработка изображений - вообще область интересная :)

Что-нибудь вряд ли так сходу посоветую, вроде все описано, осталось только аккуратно это все запрограммировать.

Но, если будут какие-то вопросы, то пишите (можете на почту или в jabber).

mushroom 18.04.2011 - 21:11

написал вопрос вам на почту jenyay.ilin@gmail.com :)

Egor 09.09.2011 - 22:13

Вопрос

Уважаемый Jenyay, как с помощью вашей библиотеки максимизировать простую линейную функцию, с аргументами х={0,1}? Просто как-то тяжело с ходу разобраться в Ваших примерах. Могли бы Вы показать решение на примере простого консольного приложения?

Jenyay 10.09.2011 - 20:45

> Могли бы Вы показать решение на примере простого консольного приложения?

Как только дойдут руки, добавлю еще несколько примеров (есть у меня на примете несколько функций, на которых было бы интересно погонять ГА).

Jenyay 11.09.2011 - 21:00

Добавил консольный пример ConsoleSchwefelTest и его описание в статью.

Egor 13.09.2011 - 19:18

Спасибо за ответ!

Ната 03.05.2012 - 19:55

А может сделаете как и для алгоритма роя частиц, на примере трех функций сферы, швефеля и растригина???

ПРОХОР 10.09.2012 - 16:53

Ч

А не могли бы вы написать статью по муравьиным алгоритмам для минимизации функции

Jenyay 10.09.2012 - 19:52

Пока ничего обещать не буду, но кто знает :)

Олег 05.05.2016 - 17:46

Здравствуйте, а что нужно поменятьв коде программы, чтобы искать максимальное значение функции ?

Jenyay 05.05.2016 - 21:44

Целевую функцию нужно умножить на -1.

.NET.. блеуу..... 03.12.2017 - 09:01

.NET.. блеуу.....

(а, питон жидосатанистам)