Игры на ЭВМ на социально- или естественно-исторические темы

Автор Nestor notabilis, октября 31, 2007, 03:31:01

« назад - далее »

sss

Basileus
Я предполагал прописать все возможные функции сразу, но предусмотреть что-то типа флажков - включателей/выключателей. Т.е. функция уже есть, но без мутации - недоступна, т.е. её как бы и нет. Флажки разместить в свойствах, а при вызове функции/метода он проверяет состояние соответствующего флага. В качестве флажков можно использовать логические переменные либо - вещественные. В последнем случае можно регулировать "степень экспрессии" функций у данного экземпляра.

А что касается заранее заданных алгоритмов и оптимизации параметров - алгоритмы и так заранее заданы. Общий биохимически/энергетический алгоритм - Кто-то что-то потребляет, и на выходе даёт биомассу и продукты, которые поступают в общий пул. В методах можно предусмотреть только общие формулы, а что поступает на входы/выходы  - будет зависеть от динамически меняющихся свойств.

Типа, раньше на вход поступало вещество А, а на выходе было вещество B и биомасса с определённым коэффициентом. В результате мутации кто-то научился брать на вход вещество B и т.д.

Все циркулирующие в Биосфере вещества  можно организовать в виде динамического массива, при появлении нового вещества оно просто дописывается в виде нового элемента массива и становится доступным для потребления. При этом соблюдается какое-нибудь соглашение - типа, чем больше индекс в массиве, тем ниже вещество по энергозапасам (более окисленное). Чем больше разница между индексами у потребляемого и выделяемого - тем больше прирост биомассы. Но при мутациях, скажем, невозможно сразу сделать всю цепочку превращений от Самого_Восстановленного до Самого_окисленного. Т.е. установка соответствующего флажка позволяет работать только с элементами массива, различающимися не более чем на минимальную и заранее определённую "дельту G."

Один акт превращения даёт строго определённую порцию энергии, пропорциональную разности между энергетическими уровнями=индексами столбцов массива. В "биохимическом блоке генома" заранее прописаны совершенно однотипные функции, обеспечивающие превращение вещества между соседними энергетическими уровнями. Причём число этих функций изначально задано, поскольку геном - не резиновый.

Будут ли эти функции включены/выключены, и какие именно индексы поступают на вход - решают мутации. Чем больше функций включено, тем более разнообразный круг субстратов используется. Если у организма есть цепочка, превращающая вещества 1>2>3>4..., то он не сбрасывает промежуточные продукты в общий пул, а гонит по цепочке, на каждом этапе получая энергию и суммируя её для последующего размножения. Если своего внутреннего продукта не хватает - добирает из общего пула. Количество "включенных функций" = "размер генома" отрицательно сказываются на скорости самовоспроизводства.

Можно также сделать двумерный массив, где по столбцам - убывание веществ по энергоёмкости, а по строкам - разные вещества с одной и той же энергоёмкостью. Элементы массива - вещественные числа, отражающие концентрацию данного вещества в Биосфере.  У автотрофов примерно  аналогично.

Это - что касалось питания растворёнными веществами. Насчёт питания биомассами (хищник-жертва) предполагалось нечто подобное, только возникают/исчезают способности потреблять не вещества, а биомассы. В данном случае учитываются такие свойства, как размер и скорость. За размер нужно платить меньшей скоростью размножения, за скорость - большим расходом субстрата на единицу прироста. Фактически, и там, и там - меньший коэффициент прироста на единицу потреблённого субстрата при увеличении размеров/скорости.
Фактически, здесь даже не методы, а свойства. При определении доступного пула пищи для данного организма проверяются свойства "размер" и "скорость" потенциальных жертв и сравниваются с собственными размерами/скоростью.

Ещё один блок функций - способность существовать в среде обитания. Сред обитания всего три -  вода, суша, воздух. Понятно, обитать там можно, только если есть пища.

Да, ещё каждая мутация создаёт новый генотип, который дописывается в динамический массив генотипов.

Излагаю довольно смутно, надеюсь, поймёте. Короче, всё это так и повисло на уровне смутных общих рассуждений.  :(

Jpx

Такой вариант не очень интересен - там уже все функции мы прописываем заранее. Более интересно что-то вроде Avida. Но пока, насколько я знаю, ничего сверхинтересного там не родилось. Возможно, компьютеры сами по себе слишком просто устроены.

zK

Да вы чего, граждане?
Компьютерной эволюции куча.
Наберите только "artificial life" в гугле. Есть и международное общество "artificial life", и журнал, и всемирные конгрессы.

Или вот гляньте эту ссылку:
http://lachlan.bluehaze.com.au/alife.html

Alexy

Цитата: "Nestor notabilis"Мне не очень нравится, что игра с выраженным военным уклоном, мирное развитие в ней сделано крайне линейно и поэтому скучно, но все же игра интересная.
Да, под мирным развитием с точки зрения правителя или командующего подразумеваются ведь восстания и заговоры, их подавление и профилактические меры :twisted: для предотвращения их возникновения. Этого в играх цивилизационного типа к сожалению нет.

Alexy

Цитата: "zK"Компьютерной эволюции куча
Но ее результаты, как я понимаю, почему-то намного менее грандиозны, чем у эволюции живых существ.
В чем причина? Только ли в недостаточном быстродействии и производительности современных вычислительных средств?

Alexy

Или может дело в этом:
Цитата: "Basileus"как подумаешь, насколько сложно реализовать хоть как-то подходящую среду для него - ручонки опускаются...
Хотя наверное главное,
не чтобы среда была смоделирована максимально павильно, а чтобы сложность модели была не меньше сложности реальной среды?

Но если так, то проблема упирается только в быстродействие и производительность вычислительных средств?
Или во что-то еще?

Дж. Тайсаев

Причин несколько.
1.У биологической эволюции мягко говоря было больше времени.
2.Среда для компьютерных самоэволюционирующих систем ограниченна. Можно конечно использовать кластерную среду из множества компьютеров, но это лишь на уровне корпоративной сети, кто же позволит такую тварь пускать в глобальную сеть и не потому что она опасна, а потому, что ресурсы забирает и сразу будет удалена.
3.Более того, среда является для таких систем не только средой, но и частью самой системы. То есть, то что мы уже затрагивали в другой ветке. Это именно вирусы, а не компьютерные бактерии.
4.Но и конечно аппаратные ограничения.

Но чисто теоретически я не думаю, что принципиально невозможно создать истинно открытые для эволюционного процесса подобные системы. Даже уверен, что уже скоро они будут созданы, уже есть для этого все чисто теоретически. Но нужна еще воля и финансирование.
Шматина глины не знатней орангутанга (Алексей Толстой).

Alexy

1. Время же тут должно измеряться и сравниваться не по абсолютной величине, а по количеству актов {мутация(и)--->отбор}.

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

Дж. Тайсаев

Alexy. Скорость актов мутаций может быть велико, но относительно. Я не думаю, что у прокариот и тем более в автокаталитических системах она была намного меньше.
Согласен, что необходимо моделировать и среду. Я например задавал лишь стохастические изменения в среде, но этого недостаточно. Не только изменения в самих самоэволюционирующих моделях должны иметь полностью открытый спектр изменчивости, но и в среде. То есть должна быть заложена возможность принципиально новых, не предусмотренных автором изменений. Радикально это можно решить, лишь задав возможность таких мутаций в самих компьютерах и не только на программном, но и на аппаратном уровне. Сейчас это чрезвычайно сложно, но может в недалеком будущем?
Шматина глины не знатней орангутанга (Алексей Толстой).

Jpx

Цитата: "Дж. Тайсаев"задав возможность таких мутаций в самих компьютерах и не только на программном, но и на аппаратном уровне. Сейчас это чрезвычайно сложно, но может в недалеком будущем?
Сейчас это уже не очень сложно - с использованием FPGA. Но это и не нужно - программного уровня теоретически достаточно, на самом деле "компьютерным бактериям" не надо строить собственный компьютер - мы же не делаем себе новую Землю.

Дж. Тайсаев

Jpx. Теоретически Вы правы, если мы говорим о модели эволюции, т.е. о сильно формализованной и упрощенной ее имитации. Но если задать настоящую, пусть и виртуальную эволюцию, тогда среда должна быть открытой. А компьютер - ограничен. Да и я думаю что компьютер для этих моделей не столько планета, сколько "хозяин", поскольку все ее участники построенны на общем "обмене веществ". Програмно-аппаратная среда то у всех одна и вырваться из нее они не могут. Неплохо было бы, чтобы и доступ к энергии был открытым, то есть не через розетку, а чтобы самостоятельно ее участники могли искать и совершенствовать ее приток. А это в замкнутой среде компьютера сделать сложнее.
Шматина глины не знатней орангутанга (Алексей Толстой).

Jpx

Цитата: "Дж. Тайсаев"о сильно формализованной и упрощенной ее имитации.
Собственно это нас, как я понимаю, и интересует :)

Цитата: "Дж. Тайсаев"Но если задать настоящую, пусть и виртуальную эволюцию, тогда среда должна быть открытой. А компьютер - ограничен.
По-моему дело не столько в ограниченности (Земля тоже ограничена, а насколько была распространена жизнь сразу после возникновения, мы не знаем), сколько в простоте среды - компьютерная память "плоская", в ней нет уровней взаимодействия.

Цитата: "Дж. Тайсаев"Да и я думаю что компьютер для этих моделей не столько планета, сколько "хозяин"
Кстати, это интересный вопрос по-моему. Первоначально компьютерные вирусы назвали вирусами потому, что они не создавали собственный процесс в операционной системе (а процесс грубо соответствует "организму"), а встраивались в код других программ.
Сейчас, с усложнением операционных систем и падением уровня компетенции среднего пользователя (так что большинство даже не знает, что происходит на их компьютере), самокопирующиеся программы уже могут позволить себе не маскироваться под кого-то. Можно ли назвать их "бактериями", причем они в общем-то проще "вирусов"?
И чем считать операционную систему в такой аналогии?

Цитата: "Дж. Тайсаев"поскольку все ее участники построенны на общем "обмене веществ".
Поток энергии в компьютере очевидно есть, а вот обмена веществ (благодаря той же "плоскости") - как-то не особо.

zK

Цитата: "Jpx"Поток энергии в компьютере очевидно есть
В смысле электророзетка?
Ну зачем так буквально! Эволюция же виртуальная, и энергия должна быть виртуальная.
Например интернетовские платежные карточки. Типа - хочешь, чтобы твои монстры не вымерли - корми их со своего счета.
Разработчики могли бы такой энергией окупить свои труды.

Alexy

Действительно, зачем так буквально?
Можно даже вообще отказатся от конкурирования за энергию, а оставить конкурирование за место "под солнцем" - ячейки памяти.
(А все ячейки памяти не отличаются друг от друга энергообеспеченностью)

Дж. Тайсаев

А почему бы и не буквально. Конечно моделировать эволюцию то же интересно, но гораздо интереснее было бы ее задавать. Что бы и борьба за розетки то же была (я конечно утрирую, в многозадачных системах и без розетки такое несложно реализовать) как в "Непобедимом" Лема.
Кстати в своей модели я с самого начала поставил такое условие, что бы никаких дифур (у меня там даже плавающей арифметики нет с целью оптимизации). Дифуры лишь моделируют процессы межвидовых взаимоотношений, причем упрощенно, но не задают их. Поэтому нужно лишь моделировать такие взаимоотношения, которые сами получались бы такими, что их можно было описывать теми же дифференциальными уравнениями.
Шматина глины не знатней орангутанга (Алексей Толстой).