Создание искусственного интеллекта на компьютере. Возможно ли создание искусственного интеллекта. Теперь мы попадаем на экран создания персонажа-инфа

Создание искусственного интеллекта на компьютере. Возможно ли создание искусственного интеллекта. Теперь мы попадаем на экран создания персонажа-инфа

  • Tutorial

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

Под катом gif-файлов мегабайт на 10.

Об игре

В игре вы управляете мотоциклом, который оставляет за собой стену из света. Игровое поле ограничено, а у соперников такие же мотоциклы. Мотоцикл едет постоянно, вы лишь можете поворачивать. Свободное место на поле кончается, и избегать препятствия становится сложнее. Побеждает тот, кто дольше всех продержится. Клон игры я сделал браузерным многопользовательским с использованием node.js и socket.io. Управление из двух кнопок – поворот влево и поворот вправо.

Интерфейс бота

Так как я использую socket.io, то обработка игроков на сервере у меня была в виде работы над массивом специальных объектов socket, которые создаёт socket.io. Из этих объектов я использовал только id, функции emit и broadcast. А значит безболезненно для самой игры можно реализовать интерфейс socket и использовать его в обработке, будто играет ещё один пользователь. Я назвал класс BotSocket .
Метод emit(event, data) у бота выполняет почти такие же действия что и у клиента при входящих данных от сервера, а именно:
  1. Сохраняет данные обо всех играющих мотоциклах при их добавлении
  2. Сохраняет ссылку на свой мотоцикл при его добавлении
  3. Обновляет данные обо всех играющих мотоциклах
  4. Сбрасывает состояния при перезапуске игры
Для передачи команд управления своим мотоциклом на сервер потребовалось сохранить ссылку на объект игры, который обрабатывает такие команды от обычных пользователей. Метод класса Game у меня назван onControl(socket, data) , поэтому я добавил метод в BotSocket
BotSocket.prototype.control = function(data) { this.game.onControl(this, data); };
При поступлении от сервера команды обновления данных мотоциклов (было совершено их передвижение) я проверяю, есть ли у меня вообще подконтрольный мотоцикл, не столкнулся ли он еще и был ли он перемещён, и, в случае успеха, я вызываю основной метод для работы ИИ - update() .
Интерфейс готов, теперь можно добавить сам ИИ.

Искусственный интеллект

Как бы громко это не звучало, но в играх игроков, за которых играет компьютер, принято называть именно ИИ, либо ботами. Объект BotSocket обладает необходимыми данными об игре, чтобы принять решение. Вариантов решения может быть всего три:
  1. Ничего делать, ехать прямо
  2. Повернуть направо
  3. Повернуть налево

Когда я решил написать бота, я понятия не имел, как это можно сделать. Я попробовал очень простой код:
BotSocket.prototype.update = function() { var r = Math.random(); if (r > 0.95) { this.control({"button": "right"}); } else if (r >
Поведение было примерно таким:

Я смотрел на него и испытывал большую радость, мне казалось, что он теперь самостоятельный. Казалось, что он сам ищет попытки выжить, бьётся там, как живой. Трогательное зрелище.

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

Я перенёс алгоритм копипастой из страницы в вики, дал ему имя BotSocket.prototype.algorithmLee . Для поля я создал сначала объект battleground , в котором при каждом обновлении помечал занятые точки с их координатами. А в алгоритме Ли сводил это поле к такому же, но с шагом 1.

Нужно было как-то определять точку назначения. Я решил выбирать её случайно через определенные интервалы времени. Сделал метод для поиска случайной свободной точки на поле:
BotSocket.prototype.getDesiredPoint = function() { var point = ; var H = Object.keys(this.battleground).length - 1; var W = Object.keys(this.battleground).length - 1; var x, y, i, j; var found = false; var iter = 0; do { i = this.getRandomInt(1, W); j = this.getRandomInt(1, H); x = i * this.moveStepSize; y = j * this.moveStepSize; if (this.battleground[x][y] === this.BG_EMPTY) { found = true; } iter++; } while (!found && iter < 100); point = ; return point; };

Теперь я мог переписать update:
BotSocket.prototype.update = function() { if (!this.desiredPoint || this.movements % this.updDestinationInterval === 0) { this.desiredPoint = this.getDesiredPoint(); } if (!this.desiredPoint) { return; } var currentPoint = ; var path = this.algorithmLee(currentPoint, this.desiredPoint); if (path && typeof path !== "undefined") { this.moveToPoint(path); } else { this.desiredPoint = this.getDesiredPoint(); } };
Здесь упоминается метод moveToPoint , который поворачивает, если нужно, чтобы достигнуть первую точку из кратчайшего пути с учётом текущего направления.

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

Бот на стороне клиента

Я решил попробовать перенести бота на клиентскую часть. Так как проект на node.js, я могу использовать написанный код для бота и на стороне клиента. Для этого я расширил BotSocket отдельным клиентским файлом, который переопределял методы emit() и control() , чтобы правильно взаимодействовать с сервером без ссылки на объект game.
Локально всё работало отлично, а после деплоя на удалённый сервер была какая-то странная картина:

Долго думая, я понял, что дело в задержке. Бот отправлял команду поворота, но она доходила после обновления его позиции на сервере, отчего он часто не мог попасть на прямой путь к желаемой точке. Но я хотел нормального бота на клиентской стороне. Поэтому решил учитывать задержку. Для этого написал снова расширение BotSocket. Статья получается длинной, так что опишу основные решения. Перед вызовом алгоритма Ли вместо текущей точки я подставлял прогнозируемое положение с учетом текущего положения и направления, а так же множителя задержки. Множитель задержки – это число, во сколько раз превосходит задержка частоту обновления положения на сервере. Предсказание будущей точки мне еще понадобилось в методе moveToPoint() .

Предсказание работало, если играл один. Но если были другие участники, то бот не учитывал это и направлял туда, где через некоторое время уже проехал другой игрок. Для решения этой проблемы я изменил метод, который помечает клетки поля занятыми. Я стал их помечать занятыми в некотором радиусе движения мотоциклов. Радиус зависит от множителя задержки.
Предварительно я снабдил бота функциями отладки, который рисовали на поле желаемую точку и занятые точки. Моя версия клиентского бота с учетом задержки теперь двигается так:


Мой красненький, остальные серверные.

Самое важное – попробуйте сделать бота сами

Основная цель этой статьи – пробудить интерес к написанию бота. Я сделал много, чтобы победить вашу лень. Для этого я добавил возможность подгружать свой собственный скрипт с ботом, который будет расширять мой базовый клиентский класс. Зайдите на проект и нажмите на текст «Show options for room with your own bot», а затем на кнопку «Create room for test your own bot». Будет создана комната, где можно легко применять ботов, по умолчанию вашим ботом будет бот без учета задержки. Теперь настало время для вашего кода.
Два простых варианта для использования вашего кода в деле, используйте любой:
  1. Выкладывайте js-файл на любой сервер, который будет доступен вашему браузеру. Url к вашему скрипту вставляйте в игре рядом с кнопкой “Load your AI script”. После нажатия на эту кнопку будет создан и заполнен новый объект botSocket , у которого будет вызван метод start() .
  2. Используйте консоль браузера (Firebug – F12, Firefox - Ctrl+Shift+K, Chrome – Ctrl+Shift+J, другие – ).

Если вы определились с методом ввода вашего кода, попробуйте переопределить методы класса BotSocket . Для начала самое простое:
BotSocket.prototype.update = function() { var r = Math.random(); if (r > 0.95) { this.control({"button": "right"}); } else if (r > 0.90) { this.control({"button": "left"}); } }

После этого пересоздайте объект botSocket, введя
botSocket = null;
При этом код на странице сам пересоздаст и заполнит объект. Этим вы измените стандартное поведение бота на случайное. А дальше уже дело для вашей фантазии или глубоких знаний.
Вы так же можете подключить скрипт моего улучшенного бота с учетом задержки, вставив в url для бота https://raw.github.com/rnixik/tronode-js/master/public/javascripts/MyBotSocketClient.js

Заключение

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

Если у вас нет под рукой node.js, вы можете воспользоваться развернутыми мной приложениями:

1) tronode.livelevel.net - самая дешевая VPS на DigitalOcean,
2) tronode-js.herokuapp.com - бесплатная виртуальная единица на Heroku.

Первый, скорее всего, первым может не справиться с нагрузкой, а второй на некоторых компьютерах сбрасывает socket.io-транспорт в xhr-polling, из-за этого игра очень сильно лагает.
Если вы хотите узнать больше, о том, как я программировал игровую логику, то можете прочитать . Там же о развертке node.js и немного о графической части.

Если у вас нет аккаунта на хабре, то задать вопросы или прислать свои интересные предложения можете мне на почту [email protected].

Теги: Добавить метки

В серии статей мы расскажем о новых подходах в ИИ, моделировании личности и обработке BIG Data, которые недоступны для большинства специалистов по ИИ и общественности. Ценность этой информации в том, что она вся проверена на практике и большинство теоретических наработок реализованы в прикладных проектах.

Многие из вас слышали про современные технологии, которые ассоциируются сегодня с понятием искусственный интеллект, а именно: экспертные системы, нейронные сети, лингвистические алгоритмы, гибридные системы, когнитивные технологии, имитационные(чат-боты) и пр.

Да, многие компании с помощью приведенных выше технологий решают задачи своих клиентов по обработке информации. Некоторые из этих компаний пишут, что создают или создали решения в области искусственного интеллекта. Но интеллект ли это?

Первое, что мы с вами сделаем это определим, что такое интеллект.

Представьте себе, что компьютер с интеллектом существует. И у вас есть возможность общаться с ним голосом или с помощью текстовых сообщений.
Вопросы:
  • Обязательно ли встраивать в программу интеллекта компьютера особенности языка (описывать семантику, грамматику, морфологию) или он смог бы выучить языки самостоятельно через взаимодействие с человеком?
  • Если бы вам поставили задачу научить компьютер языку, то что бы вы делали?
  • Если бы в обучении принимали участие только вы, то на кого он был бы похож?
А теперь, ответьте на эти вопросы еще раз, с той лишь разницей, что обучать пришлось бы:
  • Породистого попугая, теоретически способного к общению.
  • Новорожденного ребенка.
Мы с вами только что проделали интеллектуальную работу, и я надеюсь, что многие из вас получили новые знания. И вот почему:
  • Во-первых, я попросил вас представить себе (вообразить), «что будет если…». Вы действовали в изменившихся условиях. Возможно вам не хватало информации и знаний, вам было трудно.
  • Во-вторых, вы оказались способны к обучению, познанию, вы нашли знакомую вам аналогию сами или встретили ее в тексте, а возможно вы воспользовались интернетом или спросили совет друга.
Существует множество подходов к определению интеллекта. Мы определим главные его признаки…

В первую очередь интеллект – это способность обучаться и воображать .

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

Давайте вернемся к нашему примеру c ребенком для того, чтобы описать процесс обучения более подробно.
Какие принципы работают, когда ребенок учится понимать язык и говорить на нем?

  1. Чем чаще он слышит слово в разных контекстах, тем быстрее он его запомнит. Слово, которое он произнесет первым скорее всего будет – «мама».
    «Мама тебя любит»
    «Мамочка тебе ручки помоет»
    «Мама тебя целует»
    «А где мама?»
    Обучение происходит за счет избыточности данных.
  2. Чем больше каналов поступления информации задействовано, тем эффективнее обучение:
    ребенок слышит: «Мама тебя любит».
    ребенок видит улыбку мамы.
    ребенок чувствует тепло исходящее от мамы.
    ребенок чувствует вкус и запах маминого молока.
    ребенок говорит «Мама».
  3. Ребенок не сможет воспроизвести слово сразу правильно. Он будет пытаться, пробывать. «М», «Ма», «Мам», «М» … «Мама». Обучение происходит в действии, каждая следующая попытка корректируется пока не получим результат. Метод проб и ошибок. Очень важно получение обратной связи из реальности.
  4. Не воспитывайте своих детей, все равно они будут похожи на вас. Ребенок стремится быть похожим на окружающих его людей. Он подражает им и учится у них. Это один из механизмов моделирования личности, о котором мы поговорим более подробно в следующих статьях.

Какова же роль воображения?

Представьте себе, что вы едите на автомобиле по незнакомой трассе. Проезжаете знак ограничения скорости 80 км/ч. Едите дальше, и видите еще один знак ограничения скорости, но он забрызган грязью и его практически не разобрать. Вы передвигаетесь со скоростью 95 км/ч. Что будете делать? Пока вы принимали решение из-за кустов выглянул сотрудник полиции, и вы увидели лучезарную улыбку на его лице. В голове у вас мгновенно достроился «образ знака», и вы поняли почему тут стоит полицейский, и что вам срочно нужно нажать тормоз. Вы сбрасываете скорость до 55 км/ч, улыбка с лица полицейского мгновенно пропадает, и вы едите дальше.

И еще один интересный пример работы воображения из мира животных – это наблюдение за сороками. Сорока на глазах других сорок зарыла еду на пустыре. Все сороки улетели, но наша сорока вернулась на пустырь и перепрятала еду. Что произошло? Она представила себе(вообразила), «что будет если» прилетит другая сорока, которая видела куда она спрятала еду. Она смоделировала ситуацию и нашла решение как этого избежать.

Воображение – это моделирование ситуации на произвольных условиях.

Как вы уже убедились, интеллект – это не база знаний, это не набор запрограммированных реакций или следование заранее определенным правилам.

Интеллект – это способность к обучению, познанию и адаптации к изменяющимся условиям в процессе решения трудностей.

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

Да, мы упустили из виду восприятие, и забыли рассказать про память.

Представьте себе, что вы смотрите в глазок и видите часть буквы:

Что это за буква?

Может быть «К»?

Конечно нет, это же японский иероглиф «вечность».

Перед вами только, что поставили задачу(проблему). Скорее всего вы нашли похожий образ буквы «К» у себя в голове и успокоились.

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

Образ – субъективное видение реального мира, воспринимаемого при помощи органов чувств (каналов поступления информации).

Восприятие субъективно, потому что зависит от последовательности обучения, последовательности появления образов в жизни человека и их влияния.

Восприятие начинается с распознания образов светло/темно. Открываем глаза – светло, закрываем – темно. Далее человек учится распознавать все более сложные образы – «мама», «папа», мяч, стол, собака. Мы получаем опорные данные, а все последующие образы – это надстройка над предыдущими.

С этой точки зрения обучение – это процесс построения новых взаимосвязей между воспринимаемыми образами и образами, которые уже есть в памяти .

Память служит для хранения образов и их взаимосвязей .

А воображение – это способность достраивать незавершенный образ .

Для обобщения приведем еще один эксперимент из мира животных:

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

Шимпанзе показали знакомый ей образ «гроздь бананов». Но образ для нее оказался незавершенным – их нельзя достать и съесть. Но так как это был единственный источник пищи из доступных, то незавершенный образ наращивал внутреннее напряжение и требовал завершения.

Средства для решения проблемы (завершения образа), всегда имелись в наличии, но возникновение решения требовало преобразования имеющихся образов (требовалось обучиться с помощью воображения). Шимпанзе необходимо было представить себе (умственно перечислить все возможные варианты): «что будет если я возьму палку», «а что будет если…» и наиболее вероятные предположения проверить на практике, попробовать и получить обратную связь, опять вообразить, попробовать, получить обратную связь и так далее до тех пор, пока мы не завершим образ(научимся).

Если бы распознание образа иероглифа «вечность» было бы для вас вопросом жизни и смерти, то вы обязательно нашли способ это сделать.

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

  • Пересечение избыточной информации из разных информационных каналов создает образ.
  • Обучение – это преобразование информационных потоков в информационное поле.
  • Информационное поле(память) – хранение образов и их взаимосвязей.
  • Воображение – …
    – «Уважаемый читатель, дострой образ воображения самостоятельно, используя избыточную информацию из своего жизненного опыта и этой статьи».
  • Интеллект – это способность обучаться и воображать.

В начале статьи мы перечислили технологии, ассоциирующиеся сегодня с искусственным интеллектом, теперь вы самостоятельно сможете оценить насколько они соответствуют понятию интеллект.

В следующей статье мы рассмотрим такую задачу как интеллектуальный поиск информации в интернете. Определим критерии интеллектуальности, разработаем практические подходы и «пощупаем» реальное приложение, в котором реализованы принципы, описанные в этой статье.

Статья не претендует на истину, является частью наших разработок и исследований. Пишите комментарии, дополняйте материал своими примерами или размышлениями. Обучайтесь и воображайте…

ПЛАН.

1. Введение.

2. Феномен мышления.

3. Создание искусственного интеллекта.

3.1 Механический подход.

3.2 Электронный подход.

3.3 Кибернетический подход.

3.4 Нейронный подход.

3.5 Появление перцептрона.

4. Заключение.

5. Список литературы.

1. ВВЕДЕНИЕ.

Современные философы и исследователи науки часто рассматривают междисциплинарные науки как одно из достижений заново открытых в 20 веке.

Искусственный Интеллект и искусственная жизнь представляет прекрасный пример такой интеграции многих научных областей.

К сожалению, жизнь слишком сложна, чтобы можно было наметить общие направления в исследованиях. Доказательством может служить тот факт, что некоторые заинтересованы в исследовании «систем, демонстрирующих феномены живых систем», другие изучают природу химического репродуцирования или пытаются решить философские проблемы самопознания.

В понятие «искусственный интеллект» вкладывается различный смысл – от признания интеллекта у ЭВМ оснащенных программными продуктами распознавания текста и речи до отнесения к интеллектуальным лишь тех систем, которые решают весь комплекс задач, осуществляемых человеком.

Теория искусственного интеллекта при решении многих задач сталкивается с определёнными проблемами. Одна из таких проблем состоит в выяснении вопроса, доказуема ли теоретически (математически) возможность или невозможность искусственного интеллекта.

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

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

2. ФЕНОМЕН МЫШЛЕНИЯ.

Машины уже научились слагать стихи, сочинять музыку, рисовать картины. Возможно, кому-то покажется, что это – несомненный признак их разумности. Ведь если ЭВМ доступно творчество, которое всегда считалось свойством высокого интеллекта, то справедливо ли отказывать ей в разуме?

Всё же большинство из нас едва ли согласятся считать рисующую и сочиняющую стихи ЭВМ мыслящей. Что же тогда следует называть мышлением?(2)

Далёкому от науки человеку трудно себе представить, как много умеют делать современные кибернетические устройства. Стоит хотя бы упомянуть о так называемых «экспертных системах», которые на основе имеющихся в их памяти сведений анализируют состояние больного, режим технологического процесса, дают советы, как поступить в той или иной ситуации. При этом ЭВМ не только сообщает своё решение, но и объясняет, почему оно должно быть таковым. По сравнению с электронной памятью, выдачей архивных справок и математическими вычислениями, что сегодня у большинства людей ассоциируется сегодня с образом компьютера, это – качественно новая ступень интеллектуальной деятельности, когда на основе имеющегося вырабатывается новое знание. До сих пор это считалось неоспоримой привилегией человеческого мозга. Неудивительно, что тому, кто впервые встречается с подобными системами, часто просто не верится, что он имеет дело с «железной ЭВМ», а не со спрятавшимся где-то оператором-человеком.

Способность ЭВМ выполнять математические расчеты, к чему мы привыкли, ещё совсем недавно рассматривалась как одна из самых высших ступеней духовной деятельности человека. Комплексные числа, с которыми легко оперирует почти любая ЭВМ, Г.Лейбниц, сам выдающийся математик, называл «духовными амфибиями», удивительным «порождением духа Божьего», а писатель В.Одоевский в своей «Русской речи» писал о нашей способности к вычислениям как о каком-то непостижимом, почти мистическом свойстве: При всяком математическом процессе мы чувствуем, как к нашему существу присоединяется какое-то другое, чужое, которое трудится, думает, вычисляет, а между тем наше истинное существо как бы перестаёт действовать, не принимая никакого участия в этом процессе, как в деле постороннем, ждёт своей собственной пищи, а именно связи, которая должна существовать между ним и этим процессом, - и этой связи мы не находим».

Можно представить, как был бы поражён Одоевский, узнав о вычислительных способностях наших ЭВМ! Тем не менее, мы не считаем их думающими.

Любая вычислительная машина, каким бы поразительным ни было её «умение» обучаться, работает на основе заранее составленной для неё программы и поступающих внешних данных. Правда, мы, люди, тоже реализуем определенные программы действий, особенно в первые месяцы жизни, когда наше поведение почти целиком определяется заложенной в нас генетической программой. Однако принципиальное различие в том, что человек способен мотивированно, т.е. в зависимости от определённых условий, изменять программу и делает это так, что между Сарой и новой программами нет непрерывного логического мостика. Как это происходит, тоже пока не ясно, тут много споров и различных точек зрения, но это уже другой вопрос, важно, что современные вычислительные машины этим свойством не обладают. Вот если бы случилось так, что какая-то ЭВМ, решившая, скажем задачи по электромагнетизму и квантовой механике, объединила бы эти два раздела науки и вывела уравнения квантовой электродинамики, а потом с их помощью предсказала бы новые явления в этой неизвестной ей ранее области, тогда, наверное, мы были бы в праве назвать её думающей. И прежде всего потому, что она сама, без всякой программной подсказки, решила заняться качественно новой задачей. Слово «решила» как раз и означает, что она мыслит.

Всякая интеллектуальная задача представляет собой поиск способа достижения поставленной цели, а иначе это будет не решением задачи, а просто действием по точной инструкции.

Когда мы говорим, что школьник решает задачу, это означает прежде всего, что он должен сообразить, какую взять для этого формулу, какие подставить в неё числа. Однако, если он, заглядывая в тетрадь соседа, подставляет указанные там числа в написанную на доске формулу, это уже не решение, а механическое повторение. Именно так ведут себя современные ЭВМ. Строго говоря, никаких задач они не решают, и часто используемое нами выражение «ЭВМ решает» имеет условный смысл…

Способность ставить задачу и самопрограмироваться на её решение – это как раз и есть главное, что характеризует феномен мышления.

Можно возразить данному утверждению, отметив, что и рыбы, и примитивные амёбы в погоне за добычей, тоже ставят себе задачи, изменяющиеся в зависимости от конкретных условий, значит – и они мыслят?

Это могут быть примитивные формы мышления, ведь объяснить поведение животных во всём многообразии жизненных ситуаций одним лишь инстинктом – это гипотеза.(2)

Животным и птицам присуще такое свойство мышления, как способность к обобщению. Например, они узнают пищу в различных конкретных формах, так сказать – пищу вообще.

Наше обыденное понимание разумного слишком очеловечено, и, подобно тому, как в XIX веке многим казалась нелепой сама мысль о преемственной связи между человеком и обезьяной сегодня многих из нас смущает мысль о возможности нечеловеческого интеллекта. В частности, сами того не замечая, мы часто связываем представление о мышлении со способностью осознавать своё собственное «я», и это мешает нам более широко взглянуть на феномен мышления. Правда, связь между мышлением и чувством «я», по-видимому, действительно существует. Можно думать, что в условиях прихотливо изменяющейся внешней обстановки сложная система будет устойчивой лишь в том случае, если она обладает способностью ощущать своё состояние, а в этом и состоит суть нашего «я». Анализ показывает, что подобное чувство необходимо уже многим роботам-автоматам. Ведь робот, да и вообще всякая сложная самообучающаяся и активно общающаяся с человеком машина должна сообщать ему о состоянии своей памяти, о том, что ей понятно, а что – нет и почему. А для этого автомат должен ощущать и быть способным выразить своё состояние. Это нужно роботу и для того, чтобы вовремя заметить неполадки в своём «организме». Не осознающий себя робот едва ли сможет долго просуществовать в сложной, быстро меняющейся и воздействующей на него обстановке.

3.СОЗДАНИЕ ИСКУССТВЕННОГО ИНТЕЛЛНКТА.

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

Терпеливо продвигаясь вперед в своем нелегком труде, исследователи, работающие в области искусственного интеллекта (ИИ), обнаружили, что вступили в схватку с весьма запутанными проблемами, далеко выходя­щими за пределы традиционной информатики. Оказалось, что прежде всего необходимо понять механизмы процесса обучения, природу языка и чувс­твенного восприятия. Выяснилось, что для создания машин, имитирующих работу человеческого мозга, требуется разобраться в том, как действуют миллиарды его взаимосвязанных нейронов. И тогда многие исследователи пришли к выводу, что пожалуй самая трудная проблема, стоящая перед современной наукой - познание процессов функционирования человеческого разума, а не просто имитация его работы. Что непосредственно затраги­вало фундаментальные теоретические проблемы психологической науки. В самом деле, ученым трудно даже прийти к единой точке зрения относи­тельно самого предмета их исследований - интеллекта. Здесь, как в притче о слепцах, пытавшихся описывать слона, пытается придерживаться своего заветного определения.

Одной из наиболее старых распространенных методик репродуктивных технологий является метод искусственной инсеминации (ИИ). При этом способе зачатие приближено к естественному. Это вспомогательный искусственный метод, при котором семя партнера (мужа или ) вводится в матку женщины. Особенно удобна инсеминация дома. Это самый простой и доступный метод вспомогательных репродуктивных технологий. Обо всех тонкостях инсеминация в домашних условиях предлагаем вам разобраться поподробнее.

Современная жизнь полна факторов, которые не только вредны для нашего здоровья, но и могут нарушать репродуктивную функцию организма. Такими негативными факторами для репродуктивного здоровья являются неблагоприятная экологическая обстановка, стрессы, несбалансированное питание, гиподинамия. Половая система обоих полов очень чувствительна и реагирует на подобные нарушения серьезными сбоями. Нередко удается решить многие проблемы женского и мужского бесплодия, используя искусственную инсеминацию дома.

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

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

  1. для пар, у которых анализы в норме, но беременность не наступает;
  2. при положительном ВИЧ статусе женщины, чтобы не заразить партнера;
  3. у женщин, не имеющих постоянного партнера;
  4. если партнер женщины не желает иметь детей;
  5. при проблемах со спермой у мужчины ( , субфертильная сперма) и обращении к донорской сперме;
  6. после перенесенных заболеваний или травм у партнера (паротит, гонорея, сифилис, туберкулез, гепатит, перегрев, облучение);
  7. при эякуляторно-сексуальных расстройствах у мужчин;
  8. при вагинизме у женщин (сокращение влагалищных мышц и промежности с невозможностью полого акта);
  9. для пар с иммунологическим бесплодием;
  10. для женщин, желающим зачать ребенка самостоятельно (в т.ч. у лесбийских пар, у и др.)

Преимущества

Какие же преимущества у данного метода, если он с большим успехом применяется в практике зарубежных и отечественных клиник? Преимуществами метода искусственной инсеминации являются:

  • метод не требует больших финансовых вложений;
  • происходит очень быстро, как в естественных условиях;
  • процедура безболезненна;
  • может производиться в домашних условиях;
  • позволяет контролировать овуляцию и момент слияния яйцеклетки со сперматозоидом в максимально благоприятный момент для зачатия;
  • может использоваться для пар, имеющих проблемы с самостоятельным естественным зачатием (инвалидность, травмы, импотенция);
  • позволяет повысить качество спермы и максимально использовать даже минимальный шанс забеременеть;
  • при биологической несовместимости спермы партнера со слизистым секретом цервикального канала партнерши.

Минусы искусственной инсеминации

Хотя метод инсеминации на дому имеет массу преимуществ и считается довольно эффективным, однако эта процедура имеет и некоторые минусы. К ним можно отнести:

  • рекомендуется не более 2-4 раз использования этого метода: искусственная инсеминация становится неэффективной при ее многократном использовании;
  • малая эффективность метода у женщин старше 35 лет;
  • этот метод намного менее эффективен (результативность в 15-30%), чем метод традиционного ЭКО (результативность составляет 40-60%).

Условия успешной инсеминации

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

  1. нормальное строение матки и отсутствие аномалий (кроме );
  2. хорошая проходимость маточных труб;
  3. состояние овуляции;
  4. преовуляторный фолликул;
  5. отсутствие общих и гинекологических инфекционных заболеваний.

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

Кому противопоказана инсеминация

Однако при всей кажущейся простоте процедуры, она показана далеко не всем. Есть случаи, когда инсеминация на дому противопоказана. Такими ситуациями являются:

  • злокачественные опухоли любого органа;
  • опухолевидные заболевания яичников ( , киста) и их новообразования;
  • невозможность появления беременности по медицинским показаниям (заболевания психического или терапевтического профиля).

Подготовка к инсеминации в домашних условиях

Кажущаяся простой (на первый взгляд) процедура инсеминации требует тщательной подготовки.

Предварительно необходимо пройти медицинское обследование обоим партнерам. Ели сперма донорская, то обследуется лишь женщина.

Также женщине важно сделать УЗИ малого таза. Помимо данных о состоянии общего и репродуктивного здоровья, потенциальной матери необходимо сдать анализы для исключения:

  • половых инфекций;
  • гепатитов;
  • сифилиса.

Также женщине важно определить дату последних месячных и определить дату предстоящей овуляции. Иногда женщине рекомендуют использовать гормональную терапию для стимуляции выработки яйцеклеток.

Кроме того, для процедуры необходимо приобрести:

  • специальный набор (куда входят шприц, катетер, пипетка, зеркало;
  • гинекологические перчатки;
  • ватные тампоны;
  • дезинфицирующий раствор;
  • стерильное полотенце.

Руки и половые органы перед инсеминацией потребуется хорошенько вымыть.

Иногда такой метод оплодотворения требует 2-3 попытки. Инсеминацию более 4 раз считают неэффективной.

Как производится процедура дома

Обычно специалисты инсеминацию в домашних условиях редко рекомендуют. Многие сравнивают эту процедуру дома с самостоятельной пломбировкой зубов или удалением аппендицита.

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

В настоящее время в продаже имеется специальный набор для внутривлагалищной инсеминации дома. В момент искусственного введения спермы и полчаса после нее женщина должна лежать на спине не менее получаса (с приподнятым тазом). Данная процедура должна проводиться в момент овуляции.

Последовательность процедуры

  1. Вначале необходимо подготовить свежую донорскую сперму, помещенную в специальный контейнер. Партнер или муж должен вымыть руки и член перед мастурбацией. Сперма является максимально жизнеспособной первые 2-3 часа после ее получения.
  2. Подождать около 15-20 минут для разжижения спермы.
  3. При данной процедуре сама женщина очень плавно вводит сперму с помощью стерильного шприца со специальным наконечником во влагалище. Однако удобнее, чтобы это делал муж или другой помощник.

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

  1. Предварительно из шприца удаляется воздух. Самостоятельное введение спермы не совсем удобно: приходится вставлять во влагалище специальное зеркальце для контролирования процесса.
  2. Перед введением спермы во влагалище вводится зеркальце (на глубину 2-3 см). После этого туда же осторожно вводится наконечник, не доводя его близко до маточной шейки. Самостоятельное введение сперматозоидов в матку опасно травматизмом и инфицированием.
  3. Затем необходимо нажать на поршень шприца и выпустить сперму у самого основания шейки матки.
  4. Полежать с приподнятым тазом 30-40 минут. При этом шанс у сперматозоидов достигнуть цели будет выше, также это сохранит сперму от вытекания.

Некоторые считают, что шанс забеременеть таким способом выше, если женщина доведет себя до оргазма.

О том, насколько эффективно прошел процесс инсеминации на дому, покажут тесты на беременность.

Ассистировать в момент инсеминации может человек, который не заставит женщину напрягаться и нервничать, иначе это снизит шанс забеременеть.

Иногда женщины прибегают при ИИ к использованию влагалищного расширителя. Рассмотрим, как это происходит:

  1. Расширитель вводится слегка наклоненный, под углом 45 градусов.
  2. Необходимо раздвинуть лапки расширителя на 2-3 см, чтобы шейка матки оказалась в проеме.
  3. В этом положении расширитель фиксируется (в модели сделан фиксатор).
  4. Нельзя двигать расширитель в раздвинутом положении, чтобы влагалище при этом не травмировалось.
  5. К шприцу крепится удлинитель, при этом надо удостовериться в крепости и надежности фиксации.
  6. Только после этого во влагалище вводится шприц для введения спермы.
  7. После введения спермы крепление расширителя осторожно ослабляют, не меняя угол наклона в 45 градусов.
  8. Когда расширитель вернулся в исходное положение, его извлекают из влагалища.

Возможные осложнения после инсеминации

Хотя процесс инсеминации максимально отработан и не особо отличается от естественного полового акта, тем не менее, при ИИ существует риск развития некоторых осложнений. Подобными осложнениями данной процедуры могут быть:

  • появление симптомов острого воспаления органов половой сферы женщины или обострение уже имеющихся у нее хронических процессов;
  • аллергия на препараты, стимулирующие овуляцию;
  • шокоподобная реакция на введение спермы во влагалище;
  • внематочная беременность;
  • увеличение шансов возникновения многоплодной беременности.

Чего не надо делать во время инсеминации дома

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

  1. Использование слюны и смазок может повредить сперматозоидам.
  2. Нельзя использовать один набор инструментов дважды.
  3. Запрещено впрыскивание спермы в шейку матки, так как это может привести к шоку женщины.

Отзывы

Надежда, 37 лет

Делала ИИ два раза и оба неэффективно. Думаю, такую сложную операцию дома нормально не сделаешь.

Светлана, 34 года

У нас с мужем не получались дети. Решили попробовать ИИ в домашних условиях – нам посоветовал врач. Вначале ничего не вышло, но после двух неудачных попыток мы готовимся к рождению доченьки.

Валентина, 41 год

Я очень сомневаюсь в эффективности инсеминации дома. С моими проблемами по гинекологии я и в клинике методом ЭКО забеременела только со 2 раза. Какая там инсеминация в моем случае?

Виолетта, 32 года

А для меня и моей девушки инсеминация – это единственный приемлемый способ родить ребеночка. Я исповедую лесби-культуру и не приемлю секса мужчиной. Но малыша мы подругой хотим. Будем пробовать ИИ. Надеемся на успех.

Изучив отзывы об инсеминации дома, можно отметить их противоречивость. В некоторых случаях инсеминация дома оказывается малоэффективной. Однако многим парам благодаря именно этому методу удалось стать счастливыми родителями. Уж во всяком случае, метод инсеминации дома не требует больших финансовых вложений. А будет ли положительный результат от этой процедуры – будет видно после его использования. Не стоит пренебрегать правилами подготовки к использованию искусственной инсеминации. Ведь на кону лежит возможность стать родителями, сохранив при этом здоровье ребенка и собственное здоровье.

Переводим... Перевести Китайский (упрощенное письмо) Китайский (традиционное письмо) Английский Французский Немецкий Итальянский Португальский Русский Испанский Турецкий

К сожалению, мы не можем перевести эту информацию прямо сейчас - пожалуйста, повторите попытку позже.

За несколько последних десятилетий отрасль компьютерных игр проделала гигантский путь. Все началось с простейших игр, таких как Pong* и Pac- Man* , благодаря которым игроки могли на короткое время забыть о реальном мире. Современные мощнейшие игровые проекты, такие как World of Warcraft* и Call of Duty 4* , являются весьма серьезным хобби для игроков. По данным Ассоциации развлекательного программного обеспечения (ESA), современные геймеры обладают в среднем 13-летним опытом компьютерных игр, они привыкли к тому, что новые игры становятся все более сложными, увлекательными и умными. Для разработчиков основная проблема состоит в том, что необходимо создавать все более захватывающие игры. Для решения этой задачи применяется и постоянно совершенствующийся управляемый компьютером искусственный интеллект (ИИ). Но создание хорошего искусственного игрового партнера, который способен приспосабливаться к действиям игрока, играть на высоком уровне и побуждать игрока совершенствоваться, - весьма непростая задача. Эта статья открывает серию из четырех статей, в которой описываются важнейшие принципы ИИ и способы оптимизации для использования всех возможностей современных многоядерных процессоров.

Часть 1. Проектирование и реализация

Что такое ИИ для игр?

На простейшем уровне «искусственный интеллект» заключается в моделировании или имитации поведения других игроков или объектов (то есть всех элементов игры, которые могут действовать или с которыми может действовать игрок, - от ракет до аптечек), представляемых искусственным интеллектом. Основной принцип состоит в том, что это поведение имитируется. Другими словами, ИИ для игр является более «искусственным», нежели «интеллектом». Система ИИ может быть крайне проста и представлять собой набор правил или же может быть довольно сложной и выполнять роль командующего армии противника, с которой предстоит сражаться игроку.

В чем ИИ для игр отличается от традиционного представления об ИИ

В традиционных исследованиях в области ИИ целью является создание настоящего интеллекта, или даже искусственного разума, хотя и искусственными средствами. В таких проектах, как Kismet *, Массачусетского технологического института (МТИ) делается попытка создать ИИ, способный к обучению и к социальному взаимодействию, к проявлению эмоций. На момент написания этой статьи в МТИ ведется работа над созданием ИИ, располагающего уровнем способностей маленького ребенка, и результаты этой работы весьма перспективны.

С точки зрения игр подлинный ИИ далеко выходит за рамки требований развлекательного программного проекта. В играх такая мощь не нужна. Игровой ИИ не должен быть наделен чувствами и самосознанием (честно говоря, и очень хорошо, что это именно так!), ему нет необходимости обучаться чему-либо за пределами рамок игрового процесса. Подлинная цель ИИ в играх состоит в имитации разумного поведения и в предоставлении игроку убедительной, правдоподобной задачи, которую игрок сможет решить.

Назначение ИИ в играх

ИИ может исполнять различные роли в играх. Это может быть общий набор правил, определяющих поведение объектов в игровом мире. Также к ИИ следует относить и события с заранее написанным сценарием. Например, в игре F. E. A. R* маленькая страшная девочка, приводящая игроков в ужас и предвещающая события из будущего, является событием с заранее написанными сценариями. Большинству пользователей, размышляющих об ИИ и играх, приходят на ум управляемые компьютером персонажи в многопользовательских играх. Но все эти разнообразные роли могут быть исполнены одним актером - искусственным интеллектом.

Рисунок 1. Игра F.E.A.R. (Vivendi Universal*) с использованием событий с заранее написанным сценарием в качестве ИИ

Что нужно для ИИ в играх

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

Принятие решений

Основным принципом, лежащим в основе работы ИИ, является принятие решений. Для выбора при принятии решений система должна влиять на объекты с помощью системы ИИ. При этом такое воздействие может быть организовано в виде «вещания ИИ» или «обращений объектов».

В системах с «вещанием ИИ» система ИИ обычно изолирована в виде отдельного элемента игровой архитектуры. Такая стратегия зачастую принимает форму отдельного потока или нескольких потоков, в которых ИИ вычисляет наилучшее решение для заданных параметров игры. Когда ИИ принимает решение, это решение затем передается всем участвующим объектам. Такой подход лучше всего работает в стратегиях реального времени, где ИИ анализирует общий ход событий во всей игре.

Системы с «обращениями объектов» лучше подходят для игр с простыми объектами. В таких играх объекты обращаются к системе ИИ каждый раз, когда объект «думает» или обновляет себя. Такой подход отлично подходит для систем с большим количеством объектов, которым не нужно «думать» слишком часто, например в шутерах. Такая система также может воспользоваться преимуществами многопоточной архитектуры, но для нее требуется более сложное планирование (подробные сведения см. в статье Ориона Гранатира ).

Базовое восприятие

Чтобы искусственный интеллект мог принимать осмысленные решения, ему необходимо каким-либо образом воспринимать среду, в которой он находится. В простых системах такое восприятие может ограничиваться простой проверкой положения объекта игрока. В более сложных системах требуется определять основные характеристики и свойства игрового мира, например возможные маршруты для передвижения, наличие естественных укрытий на местности, области конфликтов.
При этом разработчикам необходимо придумывать способ выявления и определения основных свойств игрового мира, важных для системы ИИ. Например, укрытия на местности могут быть заранее определены дизайнерами уровней или заранее вычислены при загрузке или компиляции карты уровня. Некоторые элементы необходимо вычислять на лету, например карты конфликтов и ближайшие угрозы.

Системы на основе правил

Простейшей формой искусственного интеллекта является система на основе правил. Такая система дальше всего стоит от настоящего искусственного интеллекта. Набор заранее заданных алгоритмов определяет поведение игровых объектов. С учетом разнообразия действий конечный результат может быть неявной поведенческой системой, хотя такая система на самом деле вовсе не будет «интеллектуальной».
Хорошим примером системы на основе правил является работа дилера (крупье) при игре в блэкджек, будь то компьютерная игра или настоящий блэкджек. У дилера есть простое правило, которое он всегда соблюдает: он обязан брать карты до тех пор, пока не достигнет 17 очков (и обязан остановиться, набрав 17 очков или более). С точки зрения среднего игрока, ситуация выглядит так, как будто дилер намеренно и агрессивно играет против него. Поэтому у игрока складывается представление, что против него играет более опытный соперник, чем на самом деле (если в казино не объявлены другие правила, по которым играют дилеры).

Классическим игровым приложением, где используется такая система, является Pac-Man. Игрока преследуют четыре привидения. Каждое привидение действует, подчиняясь простому набору правил. Одно привидение всегда поворачивает влево, другое всегда поворачивает вправо, третье поворачивает в произвольном направлении, а четвертое всегда поворачивает в сторону игрока. Если бы на экране привидения появлялись по одному, их поведение было бы очень легко определить и игрок смог бы без труда от них спасаться. Но поскольку появляется сразу группа из четырех привидений, их движения кажутся сложным и скоординированным выслеживанием игрока. На самом же деле только последнее из четырех привидений учитывает расположение игрока.


Рисунок 2. Наглядное представление набора правил, управляющих привидениями в игре Pac- Man , где стрелки представляют принимаемые «решения»

Из этого примера следует, что правила не обязательно должны быть жестко заданными. Они могут основываться на воспринимаемом состоянии (как у последнего приведения) или на редактируемых параметрах объектов. Такие переменные, как уровень агрессии, уровень смелости, дальность обзора и скорость мышления, позволяют получить более разнообразное поведение объектов даже при использовании систем на основе правил. Системы на основе правил являются простейшей структурой ИИ. В более сложных и разумных системах в качестве основы используются последовательности условных правил. В тактических играх правила управляют выбором используемой тактики. В стратегических играх правила управляют последовательностью строящихся объектов и реакцией на конфликты. Системы на основе правил являются фундаментом ИИ.

Конечные автоматы в качестве ИИ

Конечный автомат (машина с конечным числом состояний) является способом моделирования и реализации объекта, обладающего различными состояниями в течение своей жизни. Каждое « состояние» может представлять физические условия, в которых находится объект, или набор эмоций, выражаемых объектом. В этом примере эмоциональные состояния не имеют никакого отношения к эмоциям ИИ, они относятся к заранее заданным поведенческим моделям, вписывающимся в контекст игры.

Вот распространенные примеры состояния системы ИИ в игре с элементами скрытных действий.

Рисунок 3. Схема состояний в типичном конечном автомате, стрелки представляют возможные изменения состояния

  • Бездействие. В этом состоянии объект просто пассивно стоит или ходит по заданному маршруту. Уровень восприятия низок. Объект редко проверяет наличие звуков, издаваемых игроком. Только если объект атакован или «видит» игрока прямо перед собой, состояние объекта изменяется на более высокий уровень восприятия.
  • Настороженность. Объект ведет активный поиск посторонних. Он часто вслушивается, стараясь услышать игрока, поле обзора дальше и шире, чем при бездействии. Объект перейдет в состояние заинтересованности, если заметит что­то необычное (что-то, требующее проверки), например открытые двери, тела в бессознательном состоянии, гильзы от патронов.
  • Заинтересованность. Объект знает, что что-то происходит. Для демонстрации такого поведения объект покидает свой обычный пост или маршрут движения и перемещается в область интереса, например к упомянутым выше открытым дверям или лежащим телам. Если при этом объект увидит игрока, он перейдет в состояние тревоги.
  • Тревога. В этом состоянии объект уже заметил игрока и выполняет действия, направленные на то, чтобы преследовать и уничтожить игрока: выход на дистанцию атаки, оповещение других стражников, включение сигнала тревоги, поиск укрытия. Когда противник находится в дальности досягаемости объекта, объект переходит в состояние агрессии.
  • Агрессия. В этом состоянии объект начинает бой с игроком. Объект атакует игрока в любое время, когда это возможно, и старается укрыться в перерывах между атаками (если требуется перезарядить оружие или дать ему остыть). Объект выходит из этого состояния, только если игрок уничтожен (возврат в обычное состояние), игрок выходит за пределы области поражения (возврат в состояние тревоги) или если погибает сам объект (переход в состояние смерти). Если у объекта остается мало здоровья, он может переключиться в состояние бегства (в зависимости от уровня смелости конкретного объекта).
  • Бегство. В этом состоянии объект пытается выйти из боя. В зависимости от игры у объекта может быть помимо основной цели (поиск и уничтожение игрока) еще и дополнительная цель - поиск аптечек для восстановления здоровья или выход из области игры. Обнаружив аптечку, объект может вернуться в состояние тревоги и возобновить бой. Объект, «выходящий» из области игры, просто удаляется.
  • Смерть. В некоторых играх состояние смерти отличается от полного бездействия. При гибели объект может, к примеру, закричать, оповестив находящиеся рядом объекты, или перейти в бессознательное состояние, в котором еще может прийти на помощь врач (в этом случае объект вернется в состояние тревоги).

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

Адаптивный ИИ

В предыдущих разделах описываются методы проектирования систем интеллекта, вписывающихся в заранее заданные игровые события. Для большинства игр такое решение вполне применимо, если все спроектированные модели проработаны достаточно полно и существует четкое понимание целей, которые преследуют управляемые искусственным интеллектом объекты. Если же в игре требуется большее разнообразие, если у игрока должен быть более сильный и динамичный противник, то ИИ должен обладать способностью развиваться, приспосабливаться и адаптироваться.

Адаптивный ИИ часто используется в боевых и стратегических играх со сложной механикой и огромным количеством разнообразных возможностей в игровом процессе. Если требуется сделать игру сложной и захватывающей, такой, чтобы игрок не смог рано или поздно догадаться о единой оптимальной стратегии для победы над компьютером, ИИ должен уметь обучаться и приспосабливаться.

Предсказание

Способность точно предугадывать следующий ход противника крайне важна для адаптивной системы. Для выбора следующего действия можно использовать различные методы, например распознавание закономерностей прошлых ходов (подробнее описывается в последующей статье) или случайные догадки.

Одним из простейших способов адаптации является отслеживание решений, принятых ранее, и оценка их успешности. Система ИИ регистрирует выбор, сделанный игроком в прошлом. Все принятые в прошлом решения нужно каким-то образом оценивать (например, в боевых играх в качестве меры успешности можно использовать полученное или утраченное преимущество, потерянное здоровье или преимущество по времени). Можно собирать дополнительные сведения о ситуации, чтобы образовать контекст для решений, например относительный уровень здоровья, прежние действия и положение на уровне (люди играют по-другому, когда им уже некуда отступать).

Можно оценивать историю для определения успешности прежних действий и принятия решения о том, нужно ли изменять тактику. До создания списка прежних действий объект может использовать стандартную тактику или действовать произвольно. Эту систему можно увязать с системами на основе правил и с различными состояниями.

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

Заключение

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

Дональд «DJ» Кихо: Дональд Кихо работает преподавателем программы информационных технологий в Технологическом институте Нью-Джерси и специализируется на разработке игр. Дональд преподает множество курсов по этой программе, включая архитектуру игр, программирование и создание уровней, а также курсы по интеграции трехмерной графики с играми. В настоящее время Дональд работает над получением степени доктора наук в области биомедицинских технологий, где технологии игр и виртуальной реальности применяются для повышения эффективности нервно-мышечной реабилитации.



© 2024 beasthackerz.ru - Браузеры. Аудио. Жесткий диск. Программы. Локальная сеть. Windows