Программирование - это просто
Advertisement
Главная arrow Искусственный интеллект arrow Моделирование сознания arrow Моделирование сознания. Урок 10. Поиск пищи и избегание опасностей
29.04.2024 г.
Главное меню
Главная
Интернет магазин
Программные продукты
Биржевые роботы
Искусственный интеллект
Математика и информатика
1С:Предприятие
Уроки C#
Уроки Delphi
Уроки программирования
Web-программирование
Дизайн и графика
Компьютер для блондинок
Исходники
Статьи
Платный раздел
Рассказы про компьютеры
Хитрости и секреты
Системный подход
Размышления
Наука для чайников
Друзья сайта
Excel-это не сложно
Все о финансах
.
Моделирование сознания. Урок 10. Поиск пищи и избегание опасностей Печать E-mail
Автор megabax   
09.04.2024 г.
unit AIObj

Моделирование сознания. Урок 10. Поиск пищи и избегание опасностей

Что бы смотреть урок полностью и скачать исходники, подпишитесь на платный раздел.

В платном разделе статья находиться здесь.


В прошлой статье мы немного усложнили мир робота. Теперь немножко займемся самим роботом. В статье  Моделирование сознания. Урок 8. От походки до сознания. была озвучена идея, что в модели живого существа можно выделить следующие функции:

  • Потребление пищи.

  • Избегание опасности.

  • Размножение.

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

...

...

.... Засунем мы его в класс Body, у последнего слегка изменим конструктор:

        /// <summary>

        /// Детектор уровня энергии

        /// </summary>

        private EnergyLevelDetector energy_level_detector;

 

        public Body(Robot a_robot)

        {

            drive = new Drive(a_robot);

            brain = new Brain(drive);

            radar = new Radar(a_robot);

            mouth = new Mouth(a_robot);

            energy_level_detector = new EnergyLevelDetector(a_robot);

        }

В класс мозга (Brain) добавим приватное поле уровня энергии: ...

...

...

.... Радибаттоны соответственно назовем rbWall, rbFood и rbDanger. Поле ввода чисел - nudStrength. Добавление будет происходит двойным кликом на поле мира робота, поэтому у формы переопределяем обработчик двойного клика:

        private void MainForm_MouseDoubleClick(object sender, MouseEventArgs e)

        {

            int x = e.X / space.location_size;

            int y = e.Y / space.location_size;

            if (rbDanger.Checked) space.objects.Add(new DangerousArea(space, x, y));

            if (rbFood.Checked) space.objects.Add(new Food(space, x, y));

            if (rbWall.Checked) space.objects.Add(new Wall(space, x, y,Convert.ToDouble(nudStrength.Value)));

        }

И все. Возвращаем значение свойства max_energy (у класса robot) и тестируем. Сначала мы видим, что робот стоит на месте и его уровень энергии медленно уменьшается. Там где робот размести "зону поглощения энергии" и увидим, как быстро стала энергия теряться. Как только она станет ниже 70, робот сорвется с места и "забегает":

Моделирование сознания. Урок 10. Поиск пищи и избегание опасностей

В принципе, мы теперь можем всяко "издеваться" над роботом: окружать его стенами, ставить "подлянки" в виде поглощателей энергии или наоборот, можем дать ему еду, поставив на поле желтый квадратик.

Теперь займемся модулем избегания опасностей. Это у нас будет класс DangerAvoiding: ...

...

...

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


Скриншоты, помеченные знаком *, являются цитатами и иллюстрациями  программного продукта "Microsoft Visual Studio 2010 Professional", авторское право на который принадлежит корпорации Microsoft.. 


Последнее обновление ( 09.04.2024 г. )
 
« След.   Пред. »
 
© 2024 Программирование - это просто
Joomla! - свободное программное обеспечение, распространяемое по лицензии GNU/GPL.
Русская локализация © 2005-2008 Joom.Ru - Русский Дом Joomla!
Design by Mamboteam.com | Powered by Mambobanner.de
Я принимаю Яндекс.Деньги