|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.12.2012, 10:46 | #1 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Генетический алгоритм верно или неверно реализовал?
Стоит задача: реализовать генетический алгоритм для максимизации/минимизации функции. Пару дней посидел поразбирался с теорией, написал код, но как-то немного боязно: вдруг не так понял теоретические сведения.
Не нравится в этом алгоритме то, что значения могут получаться всякий раз разные (хотя там широко используются методы из разряда Random, но все же) Реализовал указанную задачу в виде консольного приложения под MonoDevelop/Gtk#/Linux, исходники с которым прикладываю к посту. Ни могли бы глянуть и сказать верно реализовано или нет? Если кому-то позже понадобиться указанный код, но под Windows, можете удалить из него модули Gtk#, добавить .NET Framework и все.
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
24.12.2012, 11:19 | #2 |
Форумчанин
Регистрация: 24.06.2007
Сообщений: 351
|
Добрый день! Реализовывал однажды задачу связанную с генетическими алгоритмами. Решал транспортную задачу. Для теории очень помогла статья из википедии, думаю Вы её читали, там все очень просто описано. Реализовывал по такому порядку как описано там:
1. Начальная популяция Здесь я находил решение транспортной задачи несколькими способами (Метода "серверо-заподного угла", "наименьшего элементами"). Получались две таблицы с данными, это и была моя начальная популяция. 2. Скрещивание Здесь мы объединяем решения. В моем случае я брал столбцы из одной таблицы и подставлял во вторую и получал множество таблиц (потомки). Для двух таблиц 2*3 получалось вот так: Начальные: 0 2 1 | 1 0 2 1 0 3 | 2 1 1 Потомки (если где ошибся не судите строго): 1 2 1 | 0 0 1 | 0 2 2 | 0 0 2 | 1 2 2 | 1 0 1 2 0 3 | 1 1 3 | 1 0 1 | 1 1 1 | 2 0 1 | 2 1 3 3. Выбираем жизнеспособные решения (удовлетворяющие условиям) 4. Из оставшихся жизнеспособных выбираем значение функции для которых минимальное. Берем эти решения и переходим к пункту 1. Вот такая мини эволюция получалась. Критерием остановки цикла было и количество повторений цикла и временные рамки. Для мутации можно в момент, когда не оказывается жизнеспособных решений добавлять некоторые изменения (рендомные) В результате чисто теоретически процесс сводится к оптимальному решению через определенный промежуток повторений. Надеюсь хоть теоретически Вам немного помог. Я не маюсь бездельем, я от него тащусь!
Последний раз редактировалось Tayfun; 24.12.2012 в 11:22. |
24.12.2012, 11:42 | #3 | ||||
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Добрый
Цитата:
Цитата:
Цитата:
Цитата:
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
||||
24.12.2012, 12:06 | #4 | |
Форумчанин
Регистрация: 24.06.2007
Сообщений: 351
|
Цитата:
Отличная работа! Я не маюсь бездельем, я от него тащусь!
|
|
25.12.2012, 02:09 | #5 |
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Спасибо! С Наступающим
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
28.12.2012, 05:23 | #6 | ||
Форумчанин
Регистрация: 29.10.2009
Сообщений: 259
|
Цитата:
Цитата:
Сейчас буду смотреть на реализованные операторы скрещивания и селекции, т.к. судя по отладчику они работают по меньшей мере странно. Все же может быть кто в состоянии ткнуть пальцем и с дьявольским сарказмом сказать: "А вот тут у тебя ошибка!"?
Из всех классических книг, посвященных программированию, ненавижу всего одну - русский перевод книги Роберта Седжвика-"Фундаментальные алгоритмы C++". Предпочитаю читать её в оригинале.
|
||
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Потоки, правильно реализовал или нет? | bakanaev | Общие вопросы Delphi | 23 | 17.08.2012 22:26 |
Генетический алгоритм | CannibalCorpse | Общие вопросы Delphi | 0 | 13.04.2012 15:48 |
Генетический алгоритм | _SeregkA_ | Помощь студентам | 2 | 05.01.2012 20:26 |
Генетический алгоритм | Sparky | Помощь студентам | 5 | 16.12.2011 20:32 |
[B]Народ! Проверки мне верно или не верно? мне надо завтра сдавать[/B] | Vladislav_87 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 04.06.2008 14:34 |