GotAI.NET

Форум: Проблемы искусственного интеллекта

 

Регистрация | Вход

 Все темы | Новая тема Стр.1 (1)   Поиск:  
 Автор Тема: Экспериментальный интерпретатор aimcore
r
Сообщений: 571
Экспериментальный интерпретатор aimcore
Добавлено: 03 май 17 14:39
В соответствии со своим видением ИИ как Пользователя (инструментами) решился набросать мини-интерпретатор правил для экспериментов. Хочу поделиться.

Эта тема - блог, то есть будет полностью чиститься от сторонних постов. Так что довольства/недовольства лучше оформлять в других ветках, например в этой.
[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 03 май 17 15:03
Разработка представляет собой консольную программу, в которую в построчном режиме вводится описание задачи в виде инструкций-правил.
[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 04 май 17 13:32
Изменено: 04 май 17 14:29
Внутреннее устройство.

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


Модель мира содержит субъективные отражения реальных объектов мира. Модель является объектной, но никаких классов (пока?) нет, объект создается пустым, без атрибутов (свойств) и действий (методов). Атрибуты и действия создаются и удаляются соответствующими инструкциями.

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


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


Взаимодействие с внешним миром.

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


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

Обмен производится при помощи паттернов - последовательностей управляющих команд, начинающихся с символа "^". Например:^MOVE_UP^MOVE_DOWN^MOVE_RIGHT^MOVE_LEFT


Принцип работы.

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

Создание, заполнение и запуск задачи осуществляется в консольном режиме, построчно. Но для экономии времени есть возможность загружать в систему правила из .tsk-файла, если передать имя файла как аргумент командной строки при запуске интерпретатора.
[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 06 май 17 6:50
Изменено: 06 май 17 7:15
Основная причина разработки интерпретатора правил лежит в желании отказаться от непосредственного программирования процесса взаимодействия машины с окружающей средой, сделать его более опосредованным, более свободным и гибким. А уход от непосредственного программирования процесса взаимодействия подразумевает его полную автоматизацию, когда программа, работающая по одному алгоритму, порождает второй алгоритм. При этом главная проблема - в отсутствии у меня ясности понимания принципов работы первого алгоритма. Ну и собственно интерпретатор - попытка выработать одно из возможных решений этой проблемы.

Для примера первой задачи я взял самое простое взаимодействие с внешней средой - перемещение себя в дискретном пространстве. Я взял пример из старого учебника по информатике и предельно его упростил. В учебнике большинство задач сводятся к такой постановке, что есть поле NxM клеток, есть робот, который может передвигаться по полю, взаимодействовать с препятствиями и выполнять какие-то дополнительные действия, например, закрашивать клетки поля. Ученик должен написать на условном алгоритмическом языке алгоритм последовательности действий робота по решению каждой конкретной задачи.

Препятствия и дополнительные действия я пока выбросил и сформулировал такую постановку. Есть поле f размером 10х10 клеток, есть робот r. У робота есть атрибут (свойство) x, условно назовем его "местоположение робота по оси X". Также есть атрибут y, условно назовем его "местоположение робота по оси Y". Робот может выполнять четыре действия по перемещению себя на поле: "шаг вправо", "шаг влево", "шаг вверх", "шаг вниз". Начальное условие: робот находится в точке [1:1]. Целевое условие: робот должен оказаться в точке [10:10].

[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 08 май 17 10:58
Изменено: 08 май 17 14:19
Для решения задачи перемещения робота из исходной точки [1:1] в целевую [10:10] был разработан минимально необходимый набор инструкций-правил.
create task t1
Инструкция create task t1 создает новую задачу с именем t1.

t1 has object r
Инструкция t1 has object r в задаче с именем t1 создает новый объект r.

r has attribute x
r.x has view field
r.x has type integer
r.x has value 1
Инструкция r has attribute x у объекта r создает атрибут x. Инструкция r.x has view field устанавливает ракурс field для атрибута x у объекта r. Возможные ракурсы предполагаются следующие: field (поле, переменная), record (запись, структура), table (таблица), set (множество, массив). Инструкция r.x has type integer устанавливает целочисленный тип значений integer у поля x. Инструкция r.x has value 1 устанавливает значение 1 для поля x.

r has attribute y
r.y has view field
r.y has type integer
r.y has value 1
Инструкция r has attribute y у объекта r создает атрибут y. Инструкция r.y has view field устанавливает ракурс field для атрибута y у объекта r. Инструкция r.y has type integer устанавливает целочисленный тип значений integer у поля y. Инструкция r.y has value 1 устанавливает значение 1 для поля y.

r has action xi
r.xi has pattern ^MOVE_RIGHT
r.xi leads-to r.x +
Инструкция r has action xi создает действие (метод) с именем xi (xincrease) у объекта r. Инструкция r.xi has pattern ^MOVE_RIGHT присваивает методу xi объекта r паттерн ^MOVE_RIGHT. Эта команда будет отправлена в канал вывода в момент вызова метода r.xi. Правило r.xi leads-to r.x + означает, что вызов действия r.xi приводит к увеличению значения атрибута r.x.

r has action yi
r.yi has pattern ^MOVE_UP
r.yi leads-to r.y +
Инструкция r has action yi создает действие с именем yi (yincrease) у объекта r. Инструкция r.yi has pattern ^MOVE_UP присваивает методу yi объекта r паттерн ^MOVE_UP. Правило r.yi leads-to r.y + означает, что вызов действия r.yi приводит к увеличению значения атрибута r.y.

t1 has aim r.x = 10
t1 has aim r.y = 10
Инструкция t1 has aim r.x = 10 устанавливает цель r.x = 10 для задачи t1. Инструкция t1 has aim r.y = 10 устанавливает цель r.y = 10 для задачи t1.

run t1
Инструкция run t1 запускает процесс достижения заданных целей для задачи t1.
[Ответ][Цитата]
гость
185.24.68.*
На: Экспериментальный интерпретатор aimcore
Добавлено: 08 май 17 11:32
Цитата:
Автор: r

Я тестировал свою интеллектуальную систему на подобном поле. В зоне её наблюдения была часть экрана монитора с полем 10 на 10 клеток, и + в одной из клеток и 9 кнопок, реагирующих на клик мышки. Причём не сообщалось, как какая кнопка перемещает +. Предлагалось, с помощью кнопок достичь такого положения +, которое было на другой части экрана в поле 10 на 10. Исследую кнопки и их реакции, система достигала цели. Научившись на предыдущих тестах, достижение цели происходило уже автоматически.
[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 15 май 17 15:00
Изменено: 15 май 17 15:33
Цикл задачи (task loop)
После запуска задачи на выполнение, интерпретатор входит в непрерывный цикл, состоящий из нескольких фаз:
- анализ целей задачи
- выбор действий, приближающих к достижению целей задачи
- посыл в выходной канал паттернов выбранных действий
- прием из входного канала паттернов произошедших изменений во внешней среде

Далее, все фазы повторяются снова, вплоть до момента достижения всех целей задачи.

Проблема
Выявился архитектурный недостаток такого подхода.
Предполагалось, что задача может иметь не одну цель, а несколько - эдакий целевой образ. В примере с передвигающимся по полю роботом я задаю сразу две цели (целевой образ), поскольку роботу нужно оказаться в конкретной точке [10:10] двумерного пространства. Значения координат этих двух измерений независимы друг от друга и должны задаваться двумя независимыми целями, что я и сделал:
t1 has aim r.x = 10
t1 has aim r.y = 10

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

Через правила, я задал, что к увеличению значения координаты x местоположения робота приводит выполнение действия xi:
r.xi leads-to r.x +

Также, через соответствующее правило интерпретатору было указано, что действие xi имеет паттерн ^MOVE_RIGHT:
r.xi has pattern ^MOVE_RIGHT
Этот паттерн будет отправлен в выходной канал в момент выполнения действия xi.

Также интерпретатору было указано, что к увеличению значения координаты y приводит выполнение действия yi, и что действие yi имеет паттерн ^MOVE_UP:
r.yi leads-to r.y +
r.yi has pattern ^MOVE_UP

Когда задача выполняется, интерпретатор проанализирует обе цели в такой последовательности, в которой они были введены, подберет под каждую задачу свое действие и отправит в выходной канал паттерны обоих действий, а именно: "^MOVE_UP^MOVE_RIGHT". В случае, когда на поле нет препятствий, трудностей не возникнет. Допустим, если робот изначально находился в точке [1:1], то после такой последовательности паттернов робот окажется в точке [2:2], но сделает он это за два невидимых шага, сначала он как бы передвинется на клетку вверх, а затем, на клетку вправо:



Проблема проявится, если клетка [1:2] занята препятствием. В этом случае попасть в клетку [2:2] робот может только через клетку [2:1]. Это значит что последовательность паттернов должна быть обратной, то есть "^MOVE_RIGHT^MOVE_UP":

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

Что с этим делать - не понятно.
[Ответ][Цитата]
Luаrvik
Сообщений: 10895
На: Экспериментальный интерпретатор aimcore
Добавлено: 15 май 17 15:52
-> r
Я не понял: это Вы решаете задачу или Ваш ИИ ?
[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 15 май 17 16:14
Изменено: 15 май 17 16:16
И то, и другое. Я пытаюсь решать архитектурную задачу, по внутреннему устройству системы способной использовать инструменты со сложным интерфейсом. Хочу научить играть в шашки, карты и т.п. Если повезет. Но чтобы не программировать поведение жестко, а объяснять, при помощи правил. Нужно разработать такой набор правил, который бы позволил описать все взаимосвязи между объектами игр, позволил бы создать модель противника и т.д.

Начал с малого. Системе доступны 4 действия, она использует их как инструмент для перемещения себя в заданную (целевую) точку дискретного (для упрощения модели) пространства.
[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 23 июн 17 14:11
Работа программы

[Ответ][Цитата]
гость
194.85.224.*
На: Экспериментальный интерпретатор aimcore
Добавлено: 23 июн 17 14:34

ВАУ! ВА-АААА-ААААА-АУ!!!!! ВААААААААААААААААААААААААААААА-У!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 23 июн 17 15:18
Что вау?
[Ответ][Цитата]
r
Сообщений: 571
На: Экспериментальный интерпретатор aimcore
Добавлено: 23 июн 17 15:22
Изменено: 23 июн 17 15:59
Интерпретатор претерпел некоторые изменения. Теперь он состоит из трех основных частей: пула типов, пула моделей и пула задач:


Пул типов содержит набор объектных типов, сгруппированных в группы типов:


Пул моделей содержит набор моделей, содержащих объекты:


Пул задач содержит набор активных задач. Каждая задача может содержать как объект (локальный для задачи - с областью видимости в пределах задачи), так и ссылку на объект, находящийся в одной из моделей, либо в другой задаче:
[Ответ][Цитата]
 Стр.1 (1)