roboforum.ru

Технический форум по робототехнике.

Управление "роем"

Re: Управление "роем"

Angel71 » 21 авг 2012, 05:32

я его видел, там даже на примитивном уровне физические модельки эмулируют

Добавлено спустя 5 минут 13 секунд:
есть ещё mason
:) но в доку особо не вчитывался, так картинки проглядел мельком :pardon: не люблю яву

Добавлено спустя 8 минут 33 секунды:
может полезными будут
http://gisagents.blogspot.com/2007/10/open-source-simulation-modelling.html
http://ideas.repec.org/p/wop/safiwp/96-06-042.html
http://www.swarm.org/index.php/Main_Page
:) гуглил по "swarm simulation toolkit", хотя если почитать пару статей или док, скорей всего можно более нормальный запрос придумать

Re: Управление "роем"

kran » 22 авг 2012, 01:03

Посмотрел MASON. Посмотрел ещё NetLogo. Ещё кой-чего.
Не устанавливал. Да там вроде всё компилить ещё надо.

Ch1-Nwanna.gif
http://en.wikipedia.org/wiki/Software_agent
Ch1-Nwanna.gif (9.38 КиБ) Просмотров: 2152

Судя по этой диаграммке, swarm agents - очень неоднородное понятие. В таких штуках как MASON и иже с ним реализуют в основном или Autonomous, или Cooperate. Т.е. агенты или вообще друг с другом не общаются, или имеют один мозг на все тела - тоже общаться не надо. Нам надо Collaborative Agents смотреть. А если это гуглить, сплошь научные монографии да статьи из специальных журналов попадаются, почти вся выдача в PDF.

Ну и кстати, я на интуитивном уровне угадал:

IntelligentAgent-SimpleReflex.png
http://en.wikipedia.org/wiki/Multi-agent

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

Re: Управление "роем"

Angel71 » 18 сен 2012, 03:41

изучал алгоритмы поиска пути, мельком наткнулся на упоминание google ai challenge
краткое описание на русском можно глянуть, например тут
п.с. ещё наткнулся на microsoft cloudball challenge, но это уже к рою отношения не имеет
п.п.с. :D таки очень похоже на мою старую идею игры "войны программистов", только у них попроще.

Re: Управление "роем"

kran » 18 сен 2012, 13:39

Мне попадалась несколько раз информация по Google AI Challenge (Ants) (есть ещё и не Ants).
Ещё одно описание:
http://habrahabr.ru/post/131262/

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

Как мы уже не раз говорили на все лады, каждый определяет понятие "рой" по-своему. На мой взгляд, Google AI Challenge (Ants) - не рой. Аргументирую:

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

2. Нет общения. Опять же, это не просто противоположность общения "каждый с каждым", или всех ближайших между собой. Здесь вряд ли можно назвать общением то, что один бот получает кусочек видимой карты от каждого муравья, и даёт приказы что делать. Нет радиуса общения, нет коллизий, помех и прочего, что в реале ограничивает связь. Здесь связь идеальна, а значит нереальна.

Ну и собственно, из этих пунктов следует, что в рамках данного топика Google AI Challenge (Ants) нам бесполезен. Нам ведь нужен протокол общения. Формат сообщения, очереди сообщений, логика общения. Тут этого нет по определению.

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

Вот поэтому при всём кажущемся богатстве выбора я так и не определился с эмулятором роя. Слишком простые эмуляторы по сути и не рой эмулируют, а типа "AI", единый и неделимый. А реалистичные эмуляторы настоящего роя - слишком сложные, с физикой, механикой в 3D и т.п.

Re: Управление "роем"

Angel71 » 18 сен 2012, 18:46

просто пожертвовали некоторыми ненужными аспектами, присущие муравьям. пчела прилетела в улей, отплясала. кто за танцем наблюдал, знает где есть цветы. проторчит одна пчёлка еще немного и получит ещё кусочков карты от других пчёл. вот вам и передача информации о карте местности. могли бы пчёлки на расстоянии общятся, а хоть как птички переговариваться, была бы передача инфы о "видимом кучочке карты". а представьте, что у вас не пчёлки и не муравей, а мелкий летающий/ползающий/ездящий робот. накой ему вытанцовывать или подбираться ближе, если у его радиомодуля достаточно большой радиус приёма? вот и в этих антсах, условно можно считать, что радиус приёма гипотетического радиомодуля равен размерам карты.
с приказами тож самое - тут отосылается команда, а муравейчик выделяет феромоны. т.е. приказы отдаются косвенно.
и т.д. в общем не понимаю тяги к таким приближённым моделям. представте что кто-то прийдёт к конструктору и скажет "о, закрылочки! изменяемая форма крыла? чудненько! а чего же ты крыло самолёта не из перьев делал?" :) чего, чего? того, что самолёт делает, а не с нуля идентичную птицу воссоздаёт. если вам зачем-то нужна максимально идентичная модель с нужным уровнем приближения к оригиналу, то пардонс, пишите с нуля.
я не говорю, что прям все библиотеки с нуля писать, можно просто взять игровой движок и в нём создать симулятор. например на юнити (хотя имхо по ряду причин других вариантов по сути и нет) - бесплатен (то, что есть в платной версии совсем не обязательно для симулятора), очень удобный и гибкий, приличные наработки по графике, есть неплохой функционал работы с физикой, будет работать под почти всеми основными операционками (пока кроме линукса, его/их обещают в сл. версии) и т.д. импортировали 3д модельку из макса, прикрепили к ней коллайдер, настроили (если нужно, можно и вес и центр тяжести и т.д.) и всё, вопрос столкновений почти решен. кинули в "муравья" кирпичём и в зависимости от полученного импульса модельки по феншую и разлетятся в стороны. если есть желание, легко делается сдувание ветром или смывание водой. уровень детализации коллайдеров для обсчёта физики любой - хоть просто прямоугольник/шар/цилиндр, хоть копия мешей 3д модели. работа с кватерионами, векторами, скелетной анимацией и прочим подобным очень хорошо реализована. создать радиусы видимости или взаимодействия вроде не составляет большлго труда - используйте встроеную систему лучей и коллизий или сами перебирайте все объекты и по своему алгоритму всё вычисляйте. и т.д. :roll: неспеша за годик-два более-менее реалистичный симулятор вполне реально создать.

Re: Управление "роем"

kran » 19 сен 2012, 19:35

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

Re: Управление "роем"

Angel71 » 19 сен 2012, 21:25

протоколы это уровень особей, а не роя в общем. у одного вида муравьёв такой, у саранчи второй, у крыс третий, у стаи птиц четвёртый, у косяка рыб пятый,... :) у электронных мурашек...
:pardon: в общем я потерялся что за симулятор вы ищите. могу повторить - хотите пишите свой, эт совсем не сложно и явно в итоге будет быстрей и на выходе будет именно то, что вы хотите, а не: тут нет этого, а тут вот это не так и т.д.
нужна карта феромонов? делаете поверхность, при прохождении муравья на этой поверхности накладываете круг с определённой прозрачностью. чем больше пройдёт, тем больше значение цвета в клетках будет. раз в n тиков, фреймов, секунд,... значение каждой клетки уменьшаете на определённое значение. клетка почти любых размеров, хоть 1000клеток на пиксель/метр/единицу в координатах поверхности в симуляторе. или наоборот, n пикселей/метр/.. на клетку. каждый раз сами все массивы перебираете или средствами движка текстуры накладывайте. в юнити есть trail renderer - эт такая специальная штуковина, для отрисовки хвоста за объектом при движении, как в фильме трон. можно и её использовать. взяли муравья, вычислили столкновения в определённом радиусе, посмотрели или значения цвета в опр. точке у этих trail или переблали меш и вычислили как давно тут протопал каждый муравей, связаный с найдеными трэйлами. и т.д. вариантов как реализовать феромонные следы более чем хватает.
как перекидываться сообщениями... на не шибко сложные протоколы ну максимум неделя кодинга, большая часть из которого уйдёт на изучение как чего делать в этом юнити. там по сути обычная среда разработки - хотите в гуи объёкты накидывайте, хотите в редакторе кода сидите.
п.с. если надумаете, рекомендую кроме чтения доки и форумов посмотреть как нужные вещи в приложениях или играх сделаны. разрабы большей части всего что попадалось не то, что бы о криптолиценс или подобном слышали, они похоже вообще не знают что такое обфускация.


Rambler\'s Top100 Mail.ru counter