Мы настоятельно рекоммендуем зарегистрироваться и установить стиль Настройки->Оформление->MonoBook
Это заглавная страница коллективного проекта Управление агентами
К проекту может присоединиться каждый желающий, взяв на себя некоторые обязательства помочь целям проекта. Для этого поставьте ниже шаблон {{Участник проекта}} и приступайте к работе :).
Обсуждение проекта участниками идет на этой странице. Организационные вопросы и замечания, поправки тех, кто не участвует в проекте, вносите на страницу Обсуждение:Управление агентами'.
Использование этой информации в коммерческих целях лицами, не участвующими в коллективном проекте Управление агентами, запрещено. Но вы можете копировать и перерабатывать данную статью в научных и образовательных целях, с последующим предоставлением результата на тех же правах. Для подробной информации см. Авторское право.
Участник проекта Данер , 27.09.2009 - ...
Участник проекта Сергей Яковлев, 27.09.2009 - ...
Общие принципы проекта[]
- Тема подпроекта - любая связанная с ИИ, но с общей координацией
- Умение идти на компромис и учитывать интересы сообщества участников (например, менять свои приоритеты, т.е. иногда сделать что-то вначале, а только потом, что хотелось бы)
- Вежливость. Даже если не согласен с мнением участника - только спокойные аргументы, иначе просто стираем
- Открытость проекта - мы готовы принять любого конструктивного участника на любой стадии проекта
- Доброжелательность и помощь новичкам - мы не требуем от новичков ни каких знаний, мы помогаем им освоится и ознакомится с тем или другим - для этого готовим материалы, которые помогли бы им, и которые нужны для протокола того, что мы уже сделали.
Инструменты[]
- Для хранения кода в SVN (с контролем версий) используется следующий адрес https://vlabdownload.googlecode.com/svn/trunk/AgentControl
- Желательно преимущественно использовать C#
Общая постановка задачи[]
несформулирована
....
Задача в среде Terrarium DNA[]
черновое описание общей задачи
Мир - матрица 960x960 точек, на матрице случайно разбросаны растения и агенты (1 в нашем случае). Размер каждого растения/агента 48х48 точек. Припятствий нет - можно ползать где угодно. Координаты важны лишь для определения места куда идти.
У агента есть только зрение, видит на определенный радиус и получает массив растений чего видит.
Агент может двигаться задав цель движения, стоять бездельничать, или кушать.
Про растения - они различаются по ДНК (количеством 3 параметров), но запаса в кустах много - муравей целиком не съест.
черновой набросок упрощенной задачки
- Действия - ходы влево/вправо/верх/вниз/стоять/кушать
- Сенсоры - зрение видит всю карту
- Карта 10х10 - нарисуем в текстовом файле набором 0/1/2/3/4/5 - 0 нету растения, цифры вид растения, например, 1 = 100, 2 = 011, 3 = 101, 4 = 201, 5 = 111 ... N=x1x2x3 --- отличающиеся вкусностью (набором ДНК)
- Что у нас с состояниями: Зависит от положения на карте 100 состояний, Зависит от ???
- Что у нас с наградами: Награждать надо за съеденные растения, Награждать надо за движение к более вкусному растению, Награждать надо за риск в поиске более вкусного растения, Штрафовать нужно каждый ход за потерю времени ... Но как именно ?
- Для начала можем определить цель: съесть максимум сбалансированной пищи Z= sum(x1) * sum(x2) * sum(x3)
Комментарии[]
- Данер: "Если муровей не может съесть всю еду, то почему он вообще должен покидать найденный им куст?"
- Сергей: "Куст действительно не пропадает, но время идет. Поэтому если он захочет получить больше наград, то покинет найденный куст - во благо поиска более вкусных/сытных кустов."
Принятая терминалогия[]
- ход или эпоха : это одно действие агента.
- запуск или эксперемент: это какое-то кол-во ходов агента.
- серия экспериментов: это несколько запусков.
Например, 4 серии по 30 запусков по 10000 ходов.
Этапы реализации[]
Принято решение перед использованием алгоритма в каком-либо симуляторе, тестировать его в искусственной идеальной среде. В этой среде формально определяется задача в виде MDP или в каком другом виде (но формальном) и агент точно так же, формально решает эту задачу. Таким образом, мы убираем фазу интерпретации задача+среда в формальное описание и сосредотачиваемся на правильности выполнения алгоритма и анализа его параметров. Это позволит исследовать ограничения алгоритмов (так как задачу легко поменять с MDP на PoMDP и т.д.), а так же облегчит анализ среды (позволит нам сравнивать работу алгоритма в идеально формализованной среде), когда мы перейдем к задачам в симуляторах.
Контролеры на основе Reinforcement Learning (Q - learning)[]
Контролеры на основе Q - learning выбраны из за их простоты реализации и прозрачного алгоритма имеющего формальное доказательство работоспособности в среде MDP. Таким образом, у нас получается "чистый" и обоснованный плацдарм для дальнейшего развития проекта. Когда следующий этап будет отработан с использованием этого типа контроллеров, тогда перейдем к изменению контроллера.
MDP и Q-Learning Agent[]
- [Реализация на Python]
- Реализация на C#
Будем двигаться не к усложнению среды, а к усложнению алгоритма. Т.е. надо начинать думать, как же сочетать несколько виртуальных-агентов и одном реальном-агенте. Можно разделить на этапы:
- Последовательное (а не одновременное) введение 30 реальных агентов - наблюдаем есть ли различия в их действиях, определяем на сколько эти различия существенны. Для этого нужно вычислить не только среднее из 30 запусков (а ведь за каждый запуск появляется новый агент), но и максимум/минимум.
- Если уровень различий существенен, то разрабатываем способ совмещения решений 10 реальных агентов (они становятся вируальными) в одно оптимальное
- Если уровень различий несущественен, то следует признать, что введение дополнительных агентов мало чего дает в MDP среде, и нужно начать думать об усложнении среды, где различия в решения агентов будут существеннее.
- /Задача №0 - в результате обсуждения результатов, пришли к выводу, что имеет смысл рассматривать задачи только такие, где есть несколько решений. Ход решения таких задач может быть потенциально улучшен, т.к. Q-learning в таких задачах сильно зависим от параметров LF, DF, EF, и прежде чем найти правильное решение делает большое число неэффективных проб. Т.е. минимальная граница сильно отличается от максимальной.
- /Задача №1
PoMDP[]
Q-Learning в PoMDP не работает, это известный факт. Он так же не работает, в общем случае, в мульти-агентной среде.
Деревья Решений (ID3)[]
ГА[]
ИНС[]
MDP и Q-Learning Agent[]
Использование ИНС заключается в замене Q-матрицы нейронной сетью, при этом возможны варианты:
- Входы - состояния, выходы - оценки действий (число выходов = число действий), число нейронных сетей = одна
- Входы - состояния, выход - оценка действия (число выходов = один), число нейронный сетей = число действий
- Входы - состояния, выход - оценка наилучшего действия, (например, порог 100, а оценка 120 - означает выбор второго действия, которое оценивается в 20), (число выходов = один), число нейронный сетей = одна
Нейронную сеть необходимо обучить, только на качественных данных, тогда она сможет прогнозировать исход ситуации, которой не была обученна. Поэтому нельзя обучать произвольным тестовым значениям, которые хранятся в Q-матрице. Необходимо разработать алгоритм, который будет определять на сколько имеющимся парам состояние-действие можно доверять в зависимости от награды, полученной за это. И тогда ИНС будет обученна только таким проверенным парам.
Методы[]
Программы[]
- Можно взять за базис Реализация генетического алгоритма для .NET Framework 2.0
- В качестве среды можно использовать Terrarium DNA