ЛАБОРАТОРНАЯ РАБОТА №3 по дисциплине “Системы искусственного интеллекта" ЗАДАЧИ НА ИССЛЕДОВАНИЕ СВОЙСТВ СИСТЕМ ПРАВИЛ. НАПИСАНИЕ ПРОСТЫХ СИСТЕМ, ОСНОВАННЫХ НА ПРАВИЛАХ Введение Одним из базовых средств систем искусственного интеллекта являются системы, основанные на правилах. Данные системы позволяют эффективно решать многие задачи планирования, моделирования поведения, построения интеллектуальных динамических систем. 1. Цель занятия Закрепить теоретические знания и приобрести практические навыки в исследовании свойств систем правил и разработке простых систем, основанных на правилах. 2. Задание на занятие Разработать программную процедуру для экспериментального исследования систем, основанных на правилах. 2.1. В качестве предметной области выбрать одну из задач, описанных в приложении к лабораторной работе. 2.2. Выполнить реализацию системы, решающей задачу на одном из языков программирования (на выбор студента, по согласованию с преподавателем). 3. Методические указания Каждый студент разрабатывает свой вариант программной процедуры в соответствии с индивидуальным заданием. Можно использовать любой язык программирования. Методы поиска решений в пространстве состояний начнем рассматривать с простой задачи о миссионерах и людоедах. Три миссионера и три людоеда находятся на левом берегу реки и им нужно переправиться на правый берег, однако у них имеется только одна лодка, в которую могут сесть лишь 2 человека. Поэтому необходимо определить план, соблюдая который и курсируя несколько раз туда и обратно, можно переправить всех шестерых. Однако если на любом берегу реки число миссионеров будет меньше, чем число людоедов, то миссионеры будут съедены. Решения принимают миссионеры, людоеды их выполняют. Основой метода являются следующие этапы. 1. Определяется конечное число состояний, одно из состояний принимается за начальное и одно или несколько состояний определяются как искомое (конечное, или терминальное). Обозначим состояние S тройкой S=(x,y,z), где x и y - число миссионеров и людоедов на левом берегу, z= {L,R} - положение лодки на левом (L) или правом (R) берегах. Итак, начальное состояние S0=(3,3, L ) и конечное (терминальное) состояние Sk=(0,0, R ). 2. Заданы правила перехода между группами состояний. Введем понятие действия M:[u, v]w, где u - число миссионеров в лодке, v - число людоедов в лодке,w направление движения лодки (R или L). 3. Для каждого состояния заданы определенные условия допустимости (оценки) состояний: x y;3-x 3-y ; u+v 2. 4. После этого из текущего (исходного) состояния строятся переходы в новые состояния, показанные на рис. 1. Два новых состояния следует сразу же вычеркнуть, так как они ведут к нарушению условий допустимости (миссионеры будут съедены). 5. При каждом переходе в новое состояние производится оценка на допустимость состояний и если при использовании правила перехода для текущего состояния получается недопустимое состояние, то производится возврат к тому предыдущему состоянию, из которого было достигнуто это текущее состояние. Эта процедура получила название бэктрекинг (bac tracing или BACKTRACK). Рис. 1. Переходы из исходного состояния Рис. 2. Метод поиска в пространстве состояний Теперь мы можем проанализировать полностью алгоритм простейшего поиска решений в проблемном пространстве, описанный группами состояний и переходами между состояниями на рис.2. Решение задачи выделено на рис. 2 жирными стрелками. Такой метод поиска S0 Sk называется прямым методом поиска. Поиск Sk S0 называют обратным поиском. Поиск в двух направлениях одновременно называют двунаправленным поиском. 4. Содержание отчета Отчет должен содержать: Формальное определение структуры рабочей памяти; Формальные определения правил; Формальное определение стратегии управления; Исходный текст программы, моделирующей заданную систему правил; Анализ работы программы. Варианты индивидуальных заданий Игра в 8. Имеется 8 пронумерованных подвижных фишек, расположенных на квадратном поле 3 3. Одна клетка поля всегда свободна, что даем возможность передвигать в неё соседнюю нумерованную фишку, или по-другому, передвигать пустую фишку. Начальное состояние 2 8 3 1 6 4 7 5 Целевое состояние 1 2 3 8 4 7 6 5 1. Рабочая память – матрица чисел 3 3 с пробелом в качестве пустой клетки. 2. Правила Определим атомарные формулы OnTop(x) – находится ли пробел в верхнем ряду; OnRight(x) – находится ли пробел в правом ряду; OnLeft(x) – находится ли пробел в левом ряду; OnBottom(x) – находится ли пробел в нижнем ряду; Правило 1. Если OnTop(x) , тогда переместить пробел вверх Правило 2. Если OnRight(x) , тогда переместить пробел вверх Правило 3. Если OnLeft(x) , тогда переместить пробел вверх Правило 4. Если OnBottom(x ) , тогда переместить пробел вверх 3. Стратегия управления. 3.1 Безвозвратный режим А) случайный выбор правила Б) стратегия Hill climbing - вбирается правило, дающее наибольшее увеличение значения некоторой оценочной функции от измененной рабочей памяти. Пример функции: число фишек, стоящих не на месте, по сравнению с целевым состоянием. Проблема – локальные максимумы. 3.2 Режим с возвращением. Выбирается правило, если оно не привело к решению, то все последующие шаги забываются, а вместо него выбирается другое правило. Пример: возвращение происходит тогда, когда а) порождается состояние, которое уже встречалось. Б) было применено некоторое произвольно выбранное число правил, но описание целевого состояния не было построено (граница глубины режима с возвращением). В) более не существует применимых правил. 3.3 Поиск на графе. Задача о миссионерах Три миссионера и три людоеда подошли к реке. У них есть лодка, в которую могут поместиться не более двух человек. Как им переправиться через реку с помощью лодки, чтобы при этом число людоедов ни на каком берегу не превышало числа миссионеров. 1. Определим множество состояний. Состоянием называем тройку S(x, y, z), где x – число миссионеров на левом берегу, y – число людоедов на левом берегу, z={L,R} – положение лодки. Рабочая память содержит текущее состояние. 2. Правила: П1. если число миссионеров на берегу не меньше 2-х, переправить 2-х миссионеров на другой берег. П2. если число миссионеров на берегу не меньше 1-го, переправить 1-го миссионера на другой берег. П3. если число миссионеров на берегу не меньше 1-го, и число людоедов не меньше 1го, переправить 1-го миссионера и 1-го людоеда на другой берег. П4. если число людоедов на берегу не меньше 1-го, переправить 1-го людоеда на другой берег. П5. если число людоедов на берегу не меньше 2-х, переправить 2-х людоедов на другой берег. Правило применяется к миссионерам и людоедам на том берегу, на котором лодка. Каждое правило переписывает значение z на противоположное. 3. Стратегии управления 3.1 Перебор с возвращением. 3.2 Поднятие в гору с функцией, оценивающей число людей на правом берегу (чтобы не уменьшалось). Задача о коммивояжере. Путнику необходимо обойти все города. Задача состоит в том, чтобы начиная с города А, найти минимальный путь, проходящий через все остальные города только один раз и приводящий обратно в А. Задание: Построить рабочую память с начальным и целевым состояниями, определить правила и выбрать стратегию управления.