Здравствуйте, Ellin, Вы писали:
E>Вобщем здорово! E>Вам нужно статью написать . Было бы интересно почетать... правда может только мне E>А на самом деле было бы здорово если бы они как-то сами на основе мутаций определяли из-за чего помер их сородичь(и даже сородичь или просто труп.)... И просмотр как-то тоже сам задовался в результате эволюции... Вот только как это сделать... E>А чтоб не скушно было — можно и цвета их менять и размеры. И в зависимости от цвета ведь тоже могут быть для хищников более привлекательные...
Я помнится как-то ввел мораль у одного вида — детей врагов не убивать.
Гы-гы
Здравствуйте, Ellin, Вы писали:
E>Появилась идея написания некоторого мира в котором живут некоторые организмы, обладающие какими-то характеристиками. Например, они могут ползать по какой-то поверхности, чем-то питаться, умирать и т.п. E>На основе генетического алгоритма они скрещиваются... E>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
E>Вобщем все это задумки... можно продумать основательно мне кажется.
Ну, делал я когда-то такое на 1-м курсе. Сначала хотел научить эти организмы играть в шахматы. Идея следующая: * каждый организм имеет 4-килобайтную длину, заполненную кодами команд (условные переходы, циклы) и данными. Первоначально заполнение случайное (в пределах правильности команд). * создаются 10 организмов, они играют друг с другом. 8 худших уничтожаются, 2 лучших клонируются по 4 раза с небольшими изменениями алгоритма. Итого получается опять 10 организмов. * первая проблема проявилась в том, что в большинстве случаев партия заканчивалась на 1-2 ходу (организм делал запрещённый ход, например e2e8, и автоматически проигрывал). 4-часовая "эволюция" ни к чему не привела. * поэтому пришлось модифицировать организм, чтобы ходы были хотя бы правильными. Пришлось ввести в организм "ячейки памяти", чтобы запоминать историю ходов (например, было ли движение королём, а значит возможна рокировка или нет?) * теперь партии стали бесконечными т.к. организмы совершали бессмысленные (хотя и удовлетворяющие правилам) ходы и никак не хотели ставить противнику мат. * пришлось написать простейший шахматный анализатор, игравший примерно в силу 3-го разряда (перебор на 3-5 полуходов и немного эвристики на основе анализа слабых полей, сдвоенных пешек и т.п.). Теперь играло 5 организмов и 5 копий анализаторов — подразумевалось, что когда-нибудь организмы достигнут уровня "движков". * но этого не произошло (эволюция длилась ~50 часов), по-видимому потому, что "полезные" эволюционные изменения размывались по всему телу организма и разрушались случайной мутацией. Возможно, также сказывалось органичение на размер организма (4 Кб), но если это ограничение убрать, организм разрастётся и понять его структуру (код) будет не реально. * позднее была поставлена более простая задача — научить организм играть хотя бы в крестики-нолики. Было математически доказано, что такое обучение возможно и 4 Кб кода хватит для правильной работы такого организма. Однако "эволюция" этих организмов к успеху не привела.
Здравствуйте, Ellin, Вы писали:
E>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
Естественно. Тысячи работ, не меньше.
Здравствуйте, Ellin, Вы писали:
M>>Напиши лучше насекомое, которое умеет в темноте ползать по графику РТС Если получится, будешь вместе с Баффетом и Гейтсом в покер играть. E>Можно подробнее? Я что-то не врубился.
Вот график за последнее время Надо узнать, сколько будет завтра. Ну или через час, или через месяц. Можешь "насекомых" озадачить этим делом. Кто сильнее ошибся, тот и умер.
Здравствуйте, Anpek, Вы писали:
A>Я делал такое. Ну ползают, ну скрещиваются, ну передают свои гены детям, ну едят. И дальше чё? ИИ не появился
Причем тут ИИ? ГА это метод оптимизации. Правильное применение генетического алгоритма приводит к подбору удачного сочетания параметров (генов), удовлетворяющих условиям отбора, только и всего. Превзойти условие отбора (да еще так, чтобы создателю понравилось ) генетика в принципе не может.
uuu2: Чтобы ГА сделал вам ИИ, надо сформулировать такую функцию y = f(X), которая как можно более монотонно себя ведет при изменении каждого из параметров. Если параметры это команды процессора, то изменение одной полностью ломает всю программу, функция получается практически рандомным шумом. Это наихудшие условия для любого метода оптимизации. Вряд ли существует метод оптимизации, который может справиться с функцией такого вида
***
*** * *
*** ****** ********
Любые попытки будут не более чем случайными выстрелами в надежде однажды попасть, ГА тут ничего не даёт. Перебор будет быстрее.
Здравствуйте, Кодёнок, Вы писали:
Кё>Любые попытки будут не более чем случайными выстрелами в надежде однажды попасть, ГА тут ничего не даёт. Перебор будет быстрее.
Здравствуйте, uuu2, Вы писали:
E>>А что за команды? Свои какие-то? Или типа.... машина Тьюринга. Ну я не знаю... как было то?
U>Свои — имитация машинного кода. Команда состояла из 17 байт (1 байт команды и четыре 4-байтных числовых параметра). U>Команд было немного — типа "IF-THEN-ELSE", "GOTO", "MOV" и т.п. Были "ячейки памяти" для текущей позиции, а также 2 байта для выходного "ответа" (т.е. организм заносил в ходе своей работы какие-то значения в эти 2 байта, и это интерпретировалось как ход).
Здравствуйте, Erop, Вы писали:
E>Здравствуйте, Ellin, Вы писали:
E>>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где? E>В целом я впечатлён идеей, что тысяча обезьян таки сможет написать "каису"
Да мне много не надо. Достаточно обучить программу писать работающие программы по ТЗ
M>Вот график за последнее время Надо узнать, сколько будет завтра. Ну или через час, или через месяц. Можешь "насекомых" озадачить этим делом. Кто сильнее ошибся, тот и умер.
Здравствуйте!
Вопрос есть относительно генетических алгоритмов...
Появилась идея написания некоторого мира в котором живут некоторые организмы, обладающие какими-то характеристиками. Например, они могут ползать по какой-то поверхности, чем-то питаться, умирать и т.п.
На основе генетического алгоритма они скрещиваются...
Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
30.04.08 13:55: Перенесено модератором из 'О жизни' — Хитрик Денис
Здравствуйте, machine3000, Вы писали:
M>Здравствуйте, Ellin, Вы писали:
M>...
M>Напиши лучше насекомое, которое умеет в темноте ползать по графику РТС Если получится, будешь вместе с Баффетом и Гейтсом в покер играть.
Можно подробнее? Я что-то не врубился.
Здравствуйте, Ellin, Вы писали:
E>Здравствуйте! E>Вопрос есть относительно генетических алгоритмов... E>Появилась идея написания некоторого мира в котором живут некоторые организмы, обладающие какими-то характеристиками. Например, они могут ползать по какой-то поверхности, чем-то питаться, умирать и т.п. E>На основе генетического алгоритма они скрещиваются... E>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
Я делал такое. Ну ползают, ну скрещиваются, ну передают свои гены детям, ну едят. И дальше чё? ИИ не появился
Здравствуйте, Ellin, Вы писали:
E>Здравствуйте! E>Вопрос есть относительно генетических алгоритмов... E>Появилась идея написания некоторого мира в котором живут некоторые организмы, обладающие какими-то характеристиками. Например, они могут ползать по какой-то поверхности, чем-то питаться, умирать и т.п. E>На основе генетического алгоритма они скрещиваются... E>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
Нечто подобное было -- Terrarium .Net. Клиент-сервеная игра, в которой можно создавать свои кдассы живых существ. Или вы что-то другое придумали?
Здравствуйте, 0K, Вы писали:
0K>Здравствуйте, Ellin, Вы писали:
E>>Здравствуйте! E>>Вопрос есть относительно генетических алгоритмов... E>>Появилась идея написания некоторого мира в котором живут некоторые организмы, обладающие какими-то характеристиками. Например, они могут ползать по какой-то поверхности, чем-то питаться, умирать и т.п. E>>На основе генетического алгоритма они скрещиваются... E>>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
0K>Нечто подобное было -- Terrarium .Net. Клиент-сервеная игра, в которой можно создавать свои кдассы живых существ. Или вы что-то другое придумали?
Да... я про это краем уха слышал. Можно где-нить подробнее. ПОчему был?
Здравствуйте, Anpek, Вы писали:
A>Я делал такое. Ну ползают, ну скрещиваются, ну передают свои гены детям, ну едят. И дальше чё? ИИ не появился
Ну... Это типа аквариум. Посмотрю — потом дальше можно развивать.
Как у вас поведение определялось. Они убегали от кого-то? Кто-то догонял? Догоняли и убегали по одному алгоритму?
А что если этот алгоритм будет мутировать? И что если на основе ген. алгоритма будут "строится" алгоритмы?
Здравствуйте, Ellin, Вы писали:
E>Здравствуйте! E>Вопрос есть относительно генетических алгоритмов... E>Появилась идея написания некоторого мира в котором живут некоторые организмы, обладающие какими-то характеристиками. Например, они могут ползать по какой-то поверхности, чем-то питаться, умирать и т.п. E>На основе генетического алгоритма они скрещиваются... E>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
Нет тут никаких ГА. Это игра "жизнь". Давно тема раскрыта, обсосана и проработана. Нечего ерундой заниматься. ГА не для этого.
Здравствуйте, machine3000, Вы писали:
M>Здравствуйте, Ellin, Вы писали:
M>>>Напиши лучше насекомое, которое умеет в темноте ползать по графику РТС Если получится, будешь вместе с Баффетом и Гейтсом в покер играть. E>>Можно подробнее? Я что-то не врубился.
M>Вот график за последнее время Надо узнать, сколько будет завтра. Ну или через час, или через месяц. Можешь "насекомых" озадачить этим делом. Кто сильнее ошибся, тот и умер.
Тьфу млин, а я то подумал было! В форекс, батенька, в форекс...
Здравствуйте, Перец, Вы писали:
П>Здравствуйте, Ellin, Вы писали:
E>>Здравствуйте! E>>Вопрос есть относительно генетических алгоритмов... E>>Появилась идея написания некоторого мира в котором живут некоторые организмы, обладающие какими-то характеристиками. Например, они могут ползать по какой-то поверхности, чем-то питаться, умирать и т.п. E>>На основе генетического алгоритма они скрещиваются... E>>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
П>Нет тут никаких ГА. Это игра "жизнь". Давно тема раскрыта, обсосана и проработана. Нечего ерундой заниматься. ГА не для этого.
О! Я ж поэтому в форум о жизни и пишу
Ну... ГА для оптимизаци... Почему же не для этого?
Здравствуйте, Ellin, Вы писали:
E>Как у вас поведение определялось. Они убегали от кого-то? Кто-то догонял? Догоняли и убегали по одному алгоритму? E>А что если этот алгоритм будет мутировать? И что если на основе ген. алгоритма будут "строится" алгоритмы?
Ну, я много чё наделал. Во первых, у меня поведение задавалось некоторым скриптом, я определили понятия мутации скрипта, скрещивание двух скриптов.
Во-втрых, у меня было много всяких особей, были хищники и травоядные. У каждой особи был некоторый радиус обзора, некоторые внешние признаки (которые тоже в скрипте шли).
Поведенические фишки тоже задавал много сам. Например, я ввел такую штуку у одного вида — если особь нашла труп своего вида, то она могла определить причину смерти (от голода, от старости, или от нападения), если сметрь была от нападения другой особи, то производилось запоминие какой вид опасен.
Короче навренуть можно мног всего, тока в результате это будут все равно двигающиеся по экрану разноцветные кружки и квадратики.
Хотя, в качестве практикума по программингу — очень не плохое задание
Здравствуйте, Anpek, Вы писали:
A>Ну, я много чё наделал. Во первых, у меня поведение задавалось некоторым скриптом, я определили понятия мутации скрипта, скрещивание двух скриптов. A>Во-втрых, у меня было много всяких особей, были хищники и травоядные. У каждой особи был некоторый радиус обзора, некоторые внешние признаки (которые тоже в скрипте шли). A>Поведенические фишки тоже задавал много сам. Например, я ввел такую штуку у одного вида — если особь нашла труп своего вида, то она могла определить причину смерти (от голода, от старости, или от нападения), если сметрь была от нападения другой особи, то производилось запоминие какой вид опасен. A>Короче навренуть можно мног всего, тока в результате это будут все равно двигающиеся по экрану разноцветные кружки и квадратики. A>Хотя, в качестве практикума по программингу — очень не плохое задание
Вобщем здорово!
Вам нужно статью написать . Было бы интересно почетать... правда может только мне
А на самом деле было бы здорово если бы они как-то сами на основе мутаций определяли из-за чего помер их сородичь(и даже сородичь или просто труп.)... И просмотр как-то тоже сам задовался в результате эволюции... Вот только как это сделать...
А чтоб не скушно было — можно и цвета их менять и размеры. И в зависимости от цвета ведь тоже могут быть для хищников более привлекательные...
Здравствуйте, uuu2, Вы писали:
E>>Вобщем все это задумки... можно продумать основательно мне кажется.
U>Ну, делал я когда-то такое на 1-м курсе. Сначала хотел научить эти организмы играть в шахматы. Идея следующая: U>* каждый организм имеет 4-килобайтную длину, заполненную кодами команд (условные переходы, циклы) и данными. Первоначально заполнение случайное (в пределах правильности команд).
А что за команды? Свои какие-то? Или типа.... машина Тьюринга. Ну я не знаю... как было то?
U>* создаются 10 организмов, они играют друг с другом. 8 худших уничтожаются, 2 лучших клонируются по 4 раза с небольшими изменениями алгоритма. Итого получается опять 10 организмов.
Эх... я б сразу бабахнул 100 организмов. И обязательно подумал бы над скрещиванием.
U>* первая проблема проявилась в том, что в большинстве случаев партия заканчивалась на 1-2 ходу (организм делал запрещённый ход, например e2e8, и автоматически проигрывал). 4-часовая "эволюция" ни к чему не привела.
На пару деньков бы поставил или даже на месяцок (благо сервер есть).
U>* поэтому пришлось модифицировать организм, чтобы ходы были хотя бы правильными. Пришлось ввести в организм "ячейки памяти", чтобы запоминать историю ходов (например, было ли движение королём, а значит возможна рокировка или нет?) U>* теперь партии стали бесконечными т.к. организмы совершали бессмысленные (хотя и удовлетворяющие правилам) ходы и никак не хотели ставить противнику мат. U>* пришлось написать простейший шахматный анализатор, игравший примерно в силу 3-го разряда (перебор на 3-5 полуходов и немного эвристики на основе анализа слабых полей, сдвоенных пешек и т.п.). Теперь играло 5 организмов и 5 копий анализаторов — подразумевалось, что когда-нибудь организмы достигнут уровня "движков". U>* но этого не произошло (эволюция длилась ~50 часов), по-видимому потому, что "полезные" эволюционные изменения размывались по всему телу организма и разрушались случайной мутацией. Возможно, также сказывалось органичение на размер организма (4 Кб), но если это ограничение убрать, организм разрастётся и понять его структуру (код) будет не реально.
А зачем понимать? Главное результат. Играет — хороший организм. Не играет — смерть
E>А что за команды? Свои какие-то? Или типа.... машина Тьюринга. Ну я не знаю... как было то?
Свои — имитация машинного кода. Команда состояла из 17 байт (1 байт команды и четыре 4-байтных числовых параметра).
Команд было немного — типа "IF-THEN-ELSE", "GOTO", "MOV" и т.п. Были "ячейки памяти" для текущей позиции, а также 2 байта для выходного "ответа" (т.е. организм заносил в ходе своей работы какие-то значения в эти 2 байта, и это интерпретировалось как ход).
Тему интересную вы подняли. Да еще и в таком свете.
Давно хотел с ГА разобраться.
Накидайте мни пожалуйста ссылок на тему "что такое ГА" с примерами было бы вообще великолепно.
Спасибо.
Здравствуйте, nen777w, Вы писали:
N>Тему интересную вы подняли. Да еще и в таком свете. N>Давно хотел с ГА разобраться. N>Накидайте мни пожалуйста ссылок на тему "что такое ГА" с примерами было бы вообще великолепно. N>Спасибо.
Просто с ген. алгоритмом плотно столкнулся и разобрался летом 2006... пришлось... там решалась одна задача на его основе. Все лето ушло... но там сильно много специфики... зато видимо хорошо разобрался...
А так я сейчас посмотрел... может в википедии вам подсказать? Даже и не знаю где хорошие источники найти, что ни найду — все какое-то ... в молоко...
Предлагаю в википедию сходить для начала.
Скрещивания не было, было клонирование. Т.е. 2 "победителя" дублировали сами себя по 4 раза, а потом в "клоны" добавлялась небольшая (порядка 20 байт) случайная мутация. 8 "проигравших" (самых плохих игроков) уничтожались.
Кё>uuu2: Чтобы ГА сделал вам ИИ, надо сформулировать такую функцию y = f(X), которая как можно более монотонно себя ведет при изменении каждого из параметров. Если параметры это команды процессора, то изменение одной полностью ломает всю программу, функция получается практически рандомным шумом.
Монотонной функции тут явно не будет — алгоритм слишком сложный. И вообще, любой код состоит из команд процессора, как же ещё будет работать шахматная программа, без команд-то?
А для того, чтобы было меньше "шума", я и хотел "улучшать" организмы постепенно. Т.е. сначала они играют с простеньким "детским" движком, специально совершающим ошибки. Потом, он играет с противником на уровне 3-го разряда, и улучшает свой уровень. И так, постепенно, учится принимать правильные решения.
Кё>>uuu2: Чтобы ГА сделал вам ИИ, надо сформулировать такую функцию y = f(X), которая как можно более монотонно себя ведет при изменении каждого из параметров. Если параметры это команды процессора, то изменение одной полностью ломает всю программу, функция получается практически рандомным шумом.
U>Монотонной функции тут явно не будет — алгоритм слишком сложный. И вообще, любой код состоит из команд процессора, как же ещё будет работать шахматная программа, без команд-то?
В простейшем случае программа просто выбирает из всех ход, приводящий к наилучшей позиции. Оценка позиции производится путём домножения на веса и суммирования различных показателей. Собственно, эту функцию и имеет смысл подбирать генетическим алгоритмом.
Более продвинутая версия должна выбирать ход, приводящий к наилучшей позиции через серию ходов. Для оценки того, как долго просчитывать каждую ветвь используется другая функция, определяющая насколько позиция устойчива. Её тоже можно подбирать ГА. Ну а всё остальное надо просто тупо захардкодить.
M>В простейшем случае программа просто выбирает из всех ход, приводящий к наилучшей позиции.
Что значит "к наилучшей позиции"? Если я сдам своего ферзя — это хорошая позиция или нет? А если в результате сдачи фигуры я поставлю мат через 5 ходов?
M>Оценка позиции производится путём домножения на веса и суммирования различных показателей. Собственно, эту функцию и имеет смысл подбирать генетическим алгоритмом.
Тогда мне придётся самому придумывать показатели, а генетический алгоритм (ГА) только манипулирует весами. Это уже не ИИ! Я хочу чтобы ГА сам сформировал показатели и веса, чтобы он мог в ходе эволюции добавлять новые показатели, избавляться от ненужных и т.п.
U>Тогда мне придётся самому придумывать показатели, а генетический алгоритм (ГА) только манипулирует весами. Это уже не ИИ! Я хочу чтобы ГА сам сформировал показатели и веса, чтобы он мог в ходе эволюции добавлять новые показатели, избавляться от ненужных и т.п.
Так, стоп. ГА, несмотря на свое громкое название, — это всего лишь один из методов оптимизации, то есть это алгоритм поиска набора параметров некоторой функции, на которых эта функция достигает оптимума. Не более того. Соответственно, чтобы применить ГА надо свести задачу к функции f(X1, X2, ..., Xn)
Здравствуйте, uuu2, Вы писали:
U>Тогда мне придётся самому придумывать показатели, а генетический алгоритм (ГА) только манипулирует весами. Это уже не ИИ! Я хочу чтобы ГА сам сформировал показатели и веса, чтобы он мог в ходе эволюции добавлять новые показатели, избавляться от ненужных и т.п.
Ну когда мощность компьютеров порядков на 40 выростет, может у тебя чего-нибудь и получится. Хотя нет, чтоб получилось, механизм мутаций также должен быть подвержен мутациям. А такие мутации, как ты описал, любой механизм сразу выводят из строя.
V>Так, стоп. ГА, несмотря на свое громкое название, — это всего лишь один из методов оптимизации
Это вопрос терминологии. Ну, назовём это не "генетическим", а "эволюционно-интеллектуальным" алгоритмом. Смысл в том, что создается "живой" организм, который выполняет некую задачу, идеальный алгоритм решения которой не известен, постепенно обучается и проходи "искусственный отбор" по критерию успешности решения задачи.
Здравствуйте, uuu2, Вы писали:
U>Это вопрос терминологии. Ну, назовём это не "генетическим", а "эволюционно-интеллектуальным" алгоритмом. Смысл в том, что создается "живой" организм, который выполняет некую задачу, идеальный алгоритм решения которой не известен, постепенно обучается и проходи "искусственный отбор" по критерию успешности решения задачи.
Чем это отличается от простого полного перебора всех возможных комбинаций элементов живых организмов? Только скоростью. И то не факт. ГА (эволюционный) может работать быстрее только при выполнении ряда условий. Одним из таких условий является то, что "яблоко от яблони должно недалеко падать". Другими словами, функция эффективности должна быть гладкой. То есть f(x) — f(x + delta) должно стремиться к нулю, если delta стремиться к нулю. Потомок должен быть почти таким же, как его родители. Отсюда следует, что ГА не будет работать на мутациях компьютерной программы. Вообще, добиться выполнения этого условия очень трудно. И если это сделать, то пропадает вся "романтика" и "волшебство" эволюционных алгоритмов
V>Чем это отличается от простого полного перебора всех возможных комбинаций элементов живых организмов? Только скоростью.
Угу. Скоростью. И ещё тем, что я смогу проследить всю эволюцию организмов и сделать выводы о законах эволюции, скорости эволюции, образовании тупиковых ветвей и т.п. Это позволит улучшить и ускорить эволюцию для других (более сложных) задач, например при создания ИИ для сложных стратегический игр, систем распознавания образов...
V>Потомок должен быть почти таким же, как его родители. Отсюда следует, что ГА не будет работать на мутациях компьютерной программы.
Именно такой вывод я и сделал. Правда, есть ещё одна мысль — смоделировать некую нейронную сеть. Т.е. в "мозге" расположены нейроны (точки с координатами x,y,z). Часть нейронов являются рецепторами (туда поступает информация о расположении фигур на доске, о времени на часах и т.п.). Часть — "двигательными" (выполняют движение фигуры после обдумывания). Между нейронами протянуты "нити", по которым проходят сигналы. При этом нейроны сгруппированы нитями в "группы" (участки мозга), хотя есть нити и между разными группами.
Сигналы могут проходить одновременно по многим нитям. Время прохода по нити зависит от её длины (т.е. расстояния между нейронами). Сигналы могут иметь разную силу, при одновременном попадании нескольких сигналов на нейрон, они могут накладываться друг на друга и усиливаться). Работа мозга происходит небольшими "тиками" (за тик сигнал проходит единичное расстояние).
В ходе эволюции, в основном, мозг сохраняет структуру. Немного (в пределах 0.1%) изменяются связи, добавляются/исчезают некоторые нейроны. Связи меняются, в основном, не сильно (на соседние нейроны).
Здравствуйте, uuu2, Вы писали:
U>Сигналы могут проходить одновременно по многим нитям. Время прохода по нити зависит от её длины (т.е. расстояния между нейронами). Сигналы могут иметь разную силу, при одновременном попадании нескольких сигналов на нейрон, они могут накладываться друг на друга и усиливаться). Работа мозга происходит небольшими "тиками" (за тик сигнал проходит единичное расстояние).
U>В ходе эволюции, в основном, мозг сохраняет структуру. Немного (в пределах 0.1%) изменяются связи, добавляются/исчезают некоторые нейроны. Связи меняются, в основном, не сильно (на соседние нейроны).
Здравствуйте, uuu2, Вы писали:
U>* позднее была поставлена более простая задача — научить организм играть хотя бы в крестики-нолики. Было математически доказано, что такое обучение возможно и 4 Кб кода хватит для правильной работы такого организма. Однако "эволюция" этих организмов к успеху не привела.
Для такой задачи сложно проэволюционировать систему. 10 организмов не хватит точно, нужно десятки тысяч.
Проблема в том, что функция отбора изменяется неплавно с изменением генов. Эволюция с такими условиями работает плохо.
Вот что-нибудь аналоговое (типа алгоритма хождения по поверхности) — будет работать замечательно.
Здравствуйте, uuu2, Вы писали:
U>Монотонной функции тут явно не будет — алгоритм слишком сложный. И вообще, любой код состоит из команд процессора, как же ещё будет работать шахматная программа, без команд-то?
U>А для того, чтобы было меньше "шума", я и хотел "улучшать" организмы постепенно. Т.е. сначала они играют с простеньким "детским" движком, специально совершающим ошибки. Потом, он играет с противником на уровне 3-го разряда, и улучшает свой уровень. И так, постепенно, учится принимать правильные решения.
Я думаю обучения просто не происходило, даже в простейшем случае, на крестиках-ноликах. Представь конструкцию цикла например, ей нужно несколько взаимосвязанных опкодов. Допустим, мутация добавила половину этих опкодов, добавление второй половины сильно улучшит ИИ; даст ли половина какое-то преимущество? Она просто не будет работать, а значит в следующем поколении половина ценной эволюционной находки будет благополучно утеряна.
Если строить программу путем дописывания одной-пары команд, то для крестиков-ноликов, при правильном выборе опкодов сработает, но она будет перебором всех ситуаций на доске. Выглядеть она будет так:
IF ситуация-1 MOVE ход в такую-то клетку
IF ситуация-2 MOVE ход в такую-то клетку
сюда добавляются еще случайные команды
кончились команды, но игра еще идет — выигрывает тот, у кого позже кончились (т.е. длинее очередь)
Такая функция по мере удлинения программы правильными командами плавно приближается к правильному ИИ. Но это очевидно будет просто усеченным перебором.
Смысл генетического алгоритма, чтобы можно было заменить один ген и поменять одно свойство, не ломая остальные. Что нужно подкрутить, чтобы f1, f2, ..., fN превратилось в for i = 1..N f(i)? Для шахмат это необходимо, там перебор ситуаций не катит, даже для 4Гб генов. Проблема в том, что это должно случиться за одно поколение, сразу, скачком. Если по частям, то это движение в светлому будущему попадает во временную яму и будет сочтено неверным направлением. Надо чтобы каждый ген независимо от остальных плавно, любым изменением за одно поколение, мог приближать организм к победе; опкоды на роль генов как-то не подходят.
Кё>IF ситуация-1 MOVE ход в такую-то клетку Кё>IF ситуация-2 MOVE ход в такую-то клетку
Тогда получится база данных позиций и соответствующих им идеальных ходов. Вы знаете, сколько в шахматах возможно позиций? Ну а теперь оцените объём необходимой базы. А также машинное время, необходимое для накопления этой базы.
И потом, как определить, что ход в данной позиции идеальный? Ну, допустим, я выиграл партию за N ходов. Но это не значит, что все мои ходы были правильными! Вероятно, 80% ходов были совсем не идеальными, и при более серьёзном обдумывании можно было найти ход лучше.
Здравствуйте, uuu2, Вы писали:
Кё>>IF ситуация-1 MOVE ход в такую-то клетку Кё>>IF ситуация-2 MOVE ход в такую-то клетку
U>Тогда получится база данных позиций и соответствующих им идеальных ходов. Вы знаете, сколько в шахматах возможно позиций? Ну а теперь оцените объём необходимой базы. А также машинное время, необходимое для накопления этой базы.
Именно. Это вырожденная программа, зато работающий вариант. То, на что ты возлагал надежды, не могло сработать. Путем случайного мутирования строк нельзя написать даже простой вычислитель факториала из 1-го цикла, ибо цикл должен появиться сразу целиком, за одно поколение, а это не эволюция, это одномоментное угадывание; тогда как предназначение эволюции — постепенное приближение к идеалу от поколения к поколению.
Если ты сможешь придумать, как писать функции по шагам, так чтобы на каждом шаге они оставались работающими и выдавали все более точные результаты, только тогда твоя задумка с шахматами удастся.
Здравствуйте, Ellin, Вы писали:
E>Вобщем все это задумки... можно продумать основательно мне кажется. Вот только наверняка такое уже есть. Может подскажите где?
В целом я впечатлён идеей, что тысяча обезьян таки сможет написать "каису"
Если уж охота так эксперементировать, то я бы придумал другое представление программы. Какое-нибудь более оринетированное на предметную область. Хотя бы декларативное, что ли.
Скажем как цепочку слабейщих предусловий, или ещё как-нибудь декларативно.
Можно какой-то готовый декларативный язык взять или функциональный, например.
Но можно, в принципе, подумать, и родить какой-то свой интерпретатор. Грубо говоря, хорошо бы написать такую программу, чтобы любая последовательность байт интерпретирповалась ей, как корректный игрок в шахматы.
Тогда можно будет придумать адекватный способ скрещивания...
Все эмоциональные формулировки не соотвествуют действительному положению вещей и приведены мной исключительно "ради красного словца". За корректными формулировками и неискажённым изложением идей, следует обращаться к их автором или воспользоваться поиском
Здравствуйте, Erop, Вы писали:
E>Но можно, в принципе, подумать, и родить какой-то свой интерпретатор. Грубо говоря, хорошо бы написать такую программу, чтобы любая последовательность байт интерпретирповалась ей, как корректный игрок в шахматы. E>Тогда можно будет придумать адекватный способ скрещивания...
У меня вообщето планы весьма скромные... может я не правильно выразился... или попросту еще не устоялась формулировка.
Пусть есть мир и два типа насекомых, как здесь
Насекомые делятся на хищников и травоядных.
На карте, где они обитают есть земля с травой. которую едят травоядные и водой, которую для простоты никто не пьет и которую надо обходить.
Есть ряд характеристик у насекомых — может совершать рывки на такое то расстояние с такой-то скоростью, может двигаться бесшумно, может слышать шорохи, может различать движущиеся объекты на таком-то расстоянии, может обходится без еды столько-то, надо есть столько то чтоб наестся и т.п. и т.д. Здесь надо продумать набор этих параметров... многое выкинуть для простоты.
И самое главное!
Нейронные сетки У каждого зверька есть мозг . Так вот поведение зверька определяется сеткой... ну это можно сделать мне кажется... типа поступил сигнал со зрения — движущийся предмет там-то...(координаты пространства для простоты передаются...), нейронная сетка должна определить в какую сторону бежать... некоторые будут бежать в сторону хищника и соотв. исчезнут, некоторые убегать...
И цель. Как то так подобрать, чтоб со временем нейронная сетка хотя бы росла... нет я не говорю что искуственный интеллект получим это конечно упрется в какие-нить "оптимальные" 400 нейронов, определяющие поведение травоядного как зигзагообразное убегание от "рывками прыгающего" хищника с 300 нейронами... А изначально у них было, допустим по 20 нейронов...
Мне такого хватит, например... Хотя, конечно не факт что увеличение нейронов — плюсь... может даже они уменьшатся начнут...
Вобщем поковырятся можно... Вот только хорошобы какой-нибудь базис в виде API... или может готовых прог...
Это готовое, практическое решение. А мне хотелось бы забацать подобную (путь и более простую) штуку самостоятельно, чтобы хотя бы примерно понять, как это всё программируется и что я делал неправильно.
Здравствуйте, Amon-RA, Вы писали:
AR>Здравствуйте, Amon-RA, Вы писали:
AR>>Быстро этот вид исчез
AR>Я тоже баловался таким же
А в твоем случае программа случайно не Fight Club (Бойцовский Клуб) называлась?
А вот зайца кому, зайца-выбегайца?!
Re[4]: Генетические алгоритмы
От:
Аноним
Дата:
07.05.08 10:06
Оценка:
Здравствуйте, machine3000, Вы писали:
M>Вот график за последнее время Надо узнать, сколько будет завтра. Ну или через час, или через месяц. Можешь "насекомых" озадачить этим делом. Кто сильнее ошибся, тот и умер.
Брутально звучит
Я пробовал такие вещи делать. В лучшем случае удастся добиться 55-60% удачных сделок. Маловато однако. Так Баффетом не стать
Здравствуйте, Аноним, Вы писали:
А>Я пробовал такие вещи делать. В лучшем случае удастся добиться 55-60% удачных сделок. Маловато однако. Так Баффетом не стать
Где-то читал что уже сейчас 30% сделок на бирже совершается роботами. А через 10 лет, типа, будет 100.
Хотелось бы самому тоже попробовать. Так, блин, чтоб тело бренное прокормить, на работе всякой туфтой приходится заниматься. А по выходным ничего серьёзного сделать не успеешь.
- У вас закипает, — сказала флегматичная Петина мама.
— Да! У меня закипает чувство справедливого негодования по поводу нашего так называемого воспитания молодежи, которое приводит только к ...
— У вас закипело молоко, — сказала менее ленивая Сережина мама...
Все, что здесь сказано, может и будет использоваться против меня.