Ru-Board.club
← Вернуться в раздел «Прикладное программирование»

» Эволюция в виртуальной машине

Автор: GreyGendalf
Дата сообщения: 02.04.2004 14:22
imho
нужно делать с помощью ооп.
все существа (в том числе внешняя среда и т.д.) - объекты.
общаются (взаимодействуют между собой) с помощью сообщений.
сложные взаимодействия занимают больше времени (больше сообщений) как и должно быть.
должен быть некий минимальный период времени, для посылки одного 1 сообщения - это будет 1 такт.


Автор: Crazy_Shrike
Дата сообщения: 02.04.2004 14:39
Ой, ой!!! Подождите!
Если можно, попроще... Есть класс (CEssence), описывающий существ. Что нужно делать дальше? С чего будет стартовать программа?



Добавлено
Среду делать объектом? По-моему, неплохая идея... beeos, Ваше мнение?
Автор: beeos
Дата сообщения: 02.04.2004 15:14
А для чего делать среду объектом? ведь взаимодействие происходит не со средой в целом, а с ее ячейками. Таким образом получаем двумерный массив объектов типа "ячейка". Имхо так проще обращаться с местоположением объектов и производить поиск.
Автор: Crazy_Shrike
Дата сообщения: 02.04.2004 15:57
Логично. Делаем среду массивом. Давайте теперь обсудим конкретные свойства ячеек.

Добавлено
И я не совсем представляю одну практическую вещь... Как сделать начальную инициализацию популяции... Случайно число объектов... Как их создать?
Автор: vserd
Дата сообщения: 02.04.2004 17:05
Crazy_Shrike
Вы бы тему назвали как генетические алгоритмы или что-то на подобии.

Цитата:
. У меня есть на работе 4-х процессорный Xeon 2.2 GHz, на котором удобно гонять подобные программки, но есть проблема, которая меня выводит из себя и невозвращает обратно - загружается только один процессор! Я тут спрашивал, как, мол, всю мощность использовать - никто понятия не имеет.

Ответ простой, но реализация не очень простая. Использовать потоки, т.е. писать программу как многопоточную. Но, тут возникает проблема как синхронизировать рачет, и что можно распаралелить а что нельзя. Читать в Итернете по Multithread programming.
Цитата:
Это че за функия??? Де смотреть-то? =) В Билдере нету....

врядли ее там нету, у меня в Delphi она есть, скорей всего нужно заголовочный файл подключить. Нужно смотреть Win32 SDK (Windows SDK), или в MSDN, адрес указали.

Цитата:
Лучше скажите, это много мороки для не очень опытного программиста?

да, довольно много. Хотя все зависит от индивидуальных способностей и наличия соответстующей литеретуры для въезжания в тему. Теория не очень сложная, но реализация (отладка) может занимать месяцы. Попробуйте поискать соответствующую инфу и понять, будете ли вы делать много потоковость или будете ждать с одним потоком. Если ваши алгоритмы могут быть распаралелины, тогда смотрите в сторону многопотоковости.
Автор: Crazy_Shrike
Дата сообщения: 02.04.2004 17:25
Спасибо за информацию.
Генетические алгоритмы... В принципе да, но генетические алгоритмы - это только часть, хотя и важная. Впрочем, тему поднял для того, чтобы четче нарисовать задачу и найти однодумцев.
А генетические алгоримы очень хорошо подходят для решения многокретериальных задач оптимизации. Как раз сейчас этим и занимаюсь при написании диплома. Но такая задача имеет четкую постановку и цель, в отличие от эволюционной модели.

Веря на слово, что отладка многопотоковости займет месяцы, делать ее не буду. Не интересно это, да и времени жалко.
Автор: beeos
Дата сообщения: 03.04.2004 15:42
В общем так:
Ячейка
фактор среды (см. выше - сила для занятия ячейки)
энергия, содержащаяся в ячейке

Насчет энергии: думаю, как лучше сделать. Стоит ли делать ресурсы исчерпаемыми.
А по поводу начальной инициализации: просто создается случайное число объектов, обладающие случайными параметрами. Ведь одна из основных целей имитации эволюции -- выявить, какими параметрами должны обладать объекты для того, чтобы быть максимально жизнеспособными в данной среде.

Автор: UncoNNecteD
Дата сообщения: 05.04.2004 16:53
Не забывайте классическую игру ЖИЗНЬ
Автор: beeos
Дата сообщения: 05.04.2004 16:56
Да с нее все и началось... у меня по крайней мере...
Автор: GreyGendalf
Дата сообщения: 05.04.2004 17:33
beeos

Цитата:
Насчет энергии: думаю, как лучше сделать. Стоит ли делать ресурсы исчерпаемыми.

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


Добавлено
организмы же будут передвигаться?
поэтому в рыбных местах будет больше жизни, а более актиынве получат больше пищи
Автор: Crazy_Shrike
Дата сообщения: 06.04.2004 11:14
Так. Значит, ресурсы ячеек возобновляются с заданной скоростью. Скорость для ячейки задается случайно. Вопрос. В одной ячейке будет несколько видов ресурсов или только один?

Вопрос по технике. Я не совсем представляю, как инициализировать объекты. Поэтому-то я и делал массив объектов. Если случайное число ... как же им имена давать?
Автор: UncoNNecteD
Дата сообщения: 06.04.2004 11:28
Crazy_Shrike
Что случайное? Количество?
Делаешь динамический массив и добавляешь/удаляешь элементы.
Имена -
Tvar[x]->


Единственная сложность - если тварь умирает - ее надо будет удалять из середины массива. Индексация сменится и все ссылки потеряются. Для этого делаешь уникальный Tvar[x]->ID генерируемый псевдослучайно, но без повторений и механизм поиска индекса по ID.
Автор: Crazy_Shrike
Дата сообщения: 06.04.2004 11:32
Во, блин... я этого боялся...

Можно все это, только с примерами?
Автор: UncoNNecteD
Дата сообщения: 06.04.2004 16:54
Я на Дельфи пишу. Ты с динамическими массивами работать умеешь на Сях?
Автор: Crazy_Shrike
Дата сообщения: 06.04.2004 17:21
Nope...

Я пойму и на Делфях.
Автор: beeos
Дата сообщения: 07.04.2004 13:53
Ну что, пишем код, или еще подумаем чуток?
Автор: Crazy_Shrike
Дата сообщения: 07.04.2004 17:24
Я думаю, пора. Тем более, я уже слегка начал... Выслать на оценку?
Автор: beeos
Дата сообщения: 07.04.2004 17:38
было бы неплохо
Хотя бы схемку объектов.
Предварительно вопрос: как с визуализацией поступим?
Автор: Crazy_Shrike
Дата сообщения: 07.04.2004 17:41
Предлагаю визуалиировать хотя бы положение объектов... хотя бы для начала... Я это делал с помощью TChart...

Добавлено
Куда выслать? Прям сюда?
Автор: UncoNNecteD
Дата сообщения: 07.04.2004 18:50
Не надо пока что ничего визуализировать! Не вздумай!
Это только глюков добавит!
Потом это можно будет как раз таки распараллелить, то есть отображать мир другим процессом.
Пока что если что то сделал, покажи структуры описывающии объекты.
Можешь прям сюда,

Код:
только вот так
Автор: Crazy_Shrike
Дата сообщения: 07.04.2004 19:05
...

/*
Life time - 20 bit, [~10^6]; 0-19
Mass - 10 bit, [~10^3]; 20-29
Energy - 10 bit, [~10^3]; 30-39
Sex - 1 bit; 40
Libido - 10 bit, [~1^3]; 41-50
*/

class CEssence
{
public:
CEssence();

int GetLifeTime();
int GetMass();
void AddMass();
int GetEnergy();
void AddEnergy();
int GetSex();
int GetLibido();



private:
bool hromosoma[100];
int x;
int y;
int GetDecimal(int,int);



};
//---------------------------------
class CCell
{
public:
void SetEnergy();
int GetEnergy();
void SetMass();
int GetMass();

private:
int energy;
int mass;
};
Автор: Crazy_Shrike
Дата сообщения: 08.04.2004 12:52
Расскажите про динамические массивы...
Автор: GreyGendalf
Дата сообщения: 08.04.2004 14:38
массивы, размерность которых управляется программно, в рантайме.
в дельфи с этим проблем нет,
в си необходимо найти какую нить библиотеку (т.к. этого добра там навалом)
Автор: Crazy_Shrike
Дата сообщения: 08.04.2004 15:45
beeos, HELP!
Автор: unhappy
Дата сообщения: 09.04.2004 20:40
А может будете писать на delphi?
Автор: UncoNNecteD
Дата сообщения: 12.04.2004 13:29
Ага, тогда и я подключуся активней.
Автор: Crazy_Shrike
Дата сообщения: 13.04.2004 09:17
Не, народ, извините... ВС++.

Ничего не имею против Делфи, но глубоко убежден, что если начал на С, переходить на Делфи не стоит. Понимаю, что это может вызвать кучу споров, но тема, во-первых, не об этом, во-вторых, С, все-таки, есть С. И как показывает статистика, это самый используемый язык.
Автор: dop38
Дата сообщения: 13.04.2004 10:06
Я тут человек случайный, но вот что я вам скажу. Многие ваши проблемы с массивами, хэш-таблицами и пр. решатся на C# И удовлетворят и сишников и дельфистов, потому как C# -- симбиоз Delphi и C++, ну еще и Java

А по поводу вашей задумки, у Microsoft был конкурс года два назад Terrarium -- всё уже украдено до вас

www.microsoft.com --> Find "Terrarium", имхо, стоит посмотреть Мнооооого интересного
http://www.microsoft.com/downloads/details.aspx?FamilyID=350dfa90-6ebc-4f89-8f94-6d7c9258ca7c&displaylang=en
Автор: beeos
Дата сообщения: 13.04.2004 10:43
dop38
Большое спасибо за информацию. Как раз занимался ее поиском.
Единственное, что

Цитата:
всё уже украдено до вас

не соответствует действительности, ибо в конкурсах мы пока не участвуем, все делается исключительно ради удовольствия и расширения кругозора.
Насчет языка, торг по-моему совершенно неуместен. Можно хоть на vb, хоть на джаве писать, если нужно сделать распространяемый продукт в короткие сроки.
А здесь просто цель немножко другая. Предлагаю желающим писать на дельфи, сам даже начал было... тем интереснее будет сравнить результаты.
имхо решать такие задачи интереснее, отталкиваясь от строгих низкоуровневых сишных структур.
P.S. извиняюсь за долгое отсутствие...
Автор: dop38
Дата сообщения: 13.04.2004 11:05
beeos
А про конкурс никто и не говорит, да и закончился он уже два года назад
А вот насчет языка -- ты не прав.
Вам стоит подумать над системой плагинов, чтобы любой мог подключить к вам своего "монстра" и это правильнее. Сам я могу писать и на C++, и на С, и на Дельфи, и С# и много чего другого, но по удобству, пока, С# равных НЕТ
По поводу плагинов могу дать свои коммерческие наработки на С++ совершенно даром

Страницы: 123456

Предыдущая тема: C++: Построчное чтение файла в Builder


Форум Ru-Board.club — поднят 15-09-2016 числа. Цель - сохранить наследие старого Ru-Board, истории становления российского интернета. Сделано для людей.