Форум программистов, компьютерный форум, киберфорум
Наши страницы
Искусственный интеллект
Войти
Регистрация
Восстановить пароль
 
andreyananas
23 / 23 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
1

Рефлексный агент, основный на модели

15.01.2017, 08:34. Просмотров 329. Ответов 10

Есть такая среда моделирования "Vacuum Cleaner World". Может кто то слышал о ней.
Это моделирование пылесоса на определенной карте. Он рандомно передвигается и ищет грязь на карте. Когда находит - всасывает грязь и продолжает поиск.

Так вот, сам рефлексный агент описан в файлах agent.cpp/.h .
Нужно реализовать рефлексный агент, основанный на модели.

agent.h
Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
#ifndef AGENT__
#define AGENT__
 
#include <string>
using std::string;
 
// -----------------------------------------------------------
//              class Agent
// -----------------------------------------------------------
class Environment;
class Agent
{
public:
    Agent():bump_(false), dirty_(false) {}
    
    enum ActionType { actUP, actDOWN, actLEFT, actRIGHT, actSUCK, actIDLE };
 
    void Perceive(const Environment &env);
    ActionType Think();
private:
    bool bump_,
         dirty_;
};
 
string ActionStr(Agent::ActionType);
 
#endif




Agent.cpp

Кликните здесь для просмотра всего текста
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
#include "agent.h"
#include "environment.h"
 
 
// -----------------------------------------------------------
Agent::ActionType Agent::Think()
{
//    return static_cast<ActionType> (rand()%4);
    
    if (dirty_) return actSUCK;
    else return static_cast<ActionType> (rand()%4);
}
// -----------------------------------------------------------
// -----------------------------------------------------------
// -----------------------------------------------------------
// -----------------------------------------------------------
// -----------------------------------------------------------
void Agent::Perceive(const Environment &env)
{
    bump_ = env.isJustBump();
    dirty_ = env.isCurrentPosDirty();
}
// -----------------------------------------------------------
string ActionStr(Agent::ActionType action)
{
    switch (action)
    {
    case Agent::actUP: return "UP";
    case Agent::actDOWN: return "DOWN";
    case Agent::actLEFT: return "LEFT";
    case Agent::actRIGHT: return "RIGHT";
    case Agent::actSUCK: return "SUCK";
    case Agent::actIDLE: return "IDLE";
    default: return "???";
    }
}



п.с. может кто то уже решал подобную задачку...
0
QA
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
15.01.2017, 08:34
Ответы с готовыми решениями:

Трабла, агент неправильно изменяет другой агент
Ситуация: есть у меня мега агент, который занимается настройкой сервера, проверяет что в системе...

Java-агент Vs Ls-агент — кто быстрее?
Бэк-агента можно написать как на лс, так и на яве. Кто-нибудь обладает достоверной информацией,...

Выбор в таблице данных модели ссылки на экземпляр связанной модели
Есть ли какой-то автоматизированный способ вывести на страницу таблицу с записями модели, одно из...

Как в Yii обращаться с текущей модели из базовой модели?
Есть Базовая, модель со всякими типичными действиями. Со статическими методами разобрался, к...

Постороение экономико-математической модели (линейные модели)
Помогите решить задачу. Изделия трех артикулов производиться на верстатах 2-х типов с разной...

10
Mikhaylo
267 / 226 / 30
Регистрация: 20.09.2014
Сообщений: 1,567
15.01.2017, 10:59 2
Этот пылесос рассматривается в книге Норвига и Рассела "Искусственный интеллект".
1
andreyananas
23 / 23 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.01.2017, 11:26  [ТС] 3
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Этот пылесос рассматривается в книге Норвига и Рассела "Искусственный интеллект".
Я в курсе. Но разве там есть конкретика?
0
Mikhaylo
267 / 226 / 30
Регистрация: 20.09.2014
Сообщений: 1,567
15.01.2017, 11:54 4
в Вашей теме тоже нет конкретики.

Добавлено через 14 минут
Вам нужно придумать модель внешнего мира, ну то есть определить некоторые закономерности. Предлагаю рассмотреть такую закономерность: если робот пропылесосил клетку, то мусор в ней не появится ранее, чем через n циклов, а через m циклов мусор точно появится. Это позволит повысить эффективность, пылесос не будет перемещаться по одним и тем же местам.
Еще можно рассмотреть такую закономерность: мусор обычно скапливается в нескольких соседних клетках, в других областях - менее мусорно, там можно пылесосить реже.
Все это - элементы модели внешнего мира, которые позволят уйти от рандомности перемещений к некоторым осознанным действиям.

Добавлено через 4 минуты
Ааа и еще одна закономерность: если пылесос наткнулся на стену, то он наткнется на нее и в другой раз. То есть речь идет о модели карты, самая простая модель - карта неизменна.
1
15.01.2017, 11:54
andreyananas
23 / 23 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.01.2017, 12:07  [ТС] 5
Цитата Сообщение от Mikhaylo Посмотреть сообщение
в Вашей теме тоже нет конкретики.
Почему же нету конкретики, есть готовая рабочая прога, которая моделирует среду.
0
Mikhaylo
267 / 226 / 30
Регистрация: 20.09.2014
Сообщений: 1,567
15.01.2017, 13:58 6
Я просто не вижу конкретного вопроса. Для чего создали тему? Что Вы хотите узнать?
1
andreyananas
23 / 23 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.01.2017, 14:03  [ТС] 7
1. Для пылесоса, география среды - не известна.
2. В каждый момент времени каждая клетка (комната) территории имеет ненулевую вероятность увеличения грязи на единицу объема.
3. Пылесос может двигаться только на одну клетку вперед, назад, влево, вправо либо стоять на месте.
4. Агент может оставаться неподвижным. Эта операция не требует энергии.

На скриншоте карта комнаты.
0
Миниатюры
Рефлексный агент, основный на модели  
andreyananas
23 / 23 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
15.01.2017, 14:08  [ТС] 8
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Я просто не вижу конкретного вопроса. Для чего создали тему? Что Вы хотите узнать?
Цитата Сообщение от andreyananas Посмотреть сообщение
Так вот, сам рефлексный агент описан в файлах agent.cpp/.h .
Нужно реализовать рефлексный агент, основанный на модели.
В целом нужна помощь в реализации рефлексного агента, основанного на модели.
Но вообще, я думал, что кто то уже делал такое задание ибо похоже его часто выполняют на лабораторных в ВУЗах.
0
Mikhaylo
267 / 226 / 30
Регистрация: 20.09.2014
Сообщений: 1,567
15.01.2017, 14:26 9
На мой взгляд не самый удачный пример для реализации агента, основанного на модели. Хотя реализовать можно.

Что такое модель, представляете?
1
andreyananas
23 / 23 / 11
Регистрация: 15.10.2013
Сообщений: 862
Завершенные тесты: 2
16.01.2017, 05:15  [ТС] 10
Цитата Сообщение от Mikhaylo Посмотреть сообщение
Что такое модель, представляете?
В целом да
0
Mikhaylo
267 / 226 / 30
Регистрация: 20.09.2014
Сообщений: 1,567
16.01.2017, 06:07 11
Ну в данном случае модель внешней среды дает прогноз того, как среда отреагирует на воздействия агента.

Самое простое: Если дать команду Suck - мусор исчезнет.
Если перемещаться в четыре стороны, то можно либо удариться головой об стену, либо перейти в соседнюю клетку. При чем я предлагал модель постоянной карты, т.е. координаты стен и свободных клеток постоянны -> надо контролировать координаты робота.
Еще в книжке Норвига говорится о самостоятельных процессах внешней среды, не зависящих от действий агента. Это процесс появления мусора. Тут я тоже одну из моделей предлагал...

Итого, по большому счету роботу надо генерировать чистую карту, а затем помечать на ней виртуальные объекты - стены, свободные клетки, мусор. И затем действовать в соответствии с этой виртуальной картой.

Модели могут быть разные, одни более точные, другие менее точные, вплоть до ошибочных. Но это никак не влияет на агента, пусть выглядит как дурачок, но он будет основан на некоторой модели.
1
16.01.2017, 06:07
Answers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
16.01.2017, 06:07

Дать определение модели данных и назвать основные модели данных
Дать определение модели данных и назвать основные модели данных. Только начал изучать базы...

Агент и время
Не могу ни как разобраться в такой проблемме. Есть форма с полем типа Date/Time - CautionDate ...

Фреймсет и агент
Привет. Есть фреймсет из 2-х фреймов. В первом пейдж с кнопкой, во втором форма. По нажатию кнопки...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2019, vBulletin Solutions, Inc.