Скачать презентацию Системы искусственного интеллекта Практическое занятие 9 Поиск решений Скачать презентацию Системы искусственного интеллекта Практическое занятие 9 Поиск решений

2013-04-10 Практическое занятие 9.pptx

  • Количество слайдов: 24

Системы искусственного интеллекта Практическое занятие 9. Поиск решений при наличии многих альтернатив. Генетические алгоритмы. Системы искусственного интеллекта Практическое занятие 9. Поиск решений при наличии многих альтернатив. Генетические алгоритмы.

Лабораторная работа № 3 Вариант № 1 Л/р № 3 для бакалавров Задачи на Лабораторная работа № 3 Вариант № 1 Л/р № 3 для бакалавров Задачи на поиск оптимального решения из множества альтернативных решений

Обезьяна и банан Исходное состояние ◦ Обезьяна находится в комнате у двери ◦ В Обезьяна и банан Исходное состояние ◦ Обезьяна находится в комнате у двери ◦ В центре комнаты высоко (с пола не достать) подвешен банан ◦ У окна стоит ящик, который можно подвинуть, чтобы залезть на него и достать банан Задача: запрограммировать в виде правил разумное поведение обезьяны

Формализация задачи Местонахождение обезьяны ограничено тремя местами ◦ position(at_door). ◦ position(at_window). ◦ position(center). Свобода Формализация задачи Местонахождение обезьяны ограничено тремя местами ◦ position(at_door). ◦ position(at_window). ◦ position(center). Свобода обезьяны ограничена четырьмя действиями ◦ Схватить банан (если она в центре комнаты на ящике) ◦ Залезть на ящик ◦ Передвинуть ящик в любое место (из трех возможных) ◦ Перейти в другое место (из трех возможных)

Описание состояния задачи Текущую ситуацию опишем четырехместным отношением: ◦ state(где_в_комнате, где_между_полом_и_по толком, где_ящик, где_банан). Описание состояния задачи Текущую ситуацию опишем четырехместным отношением: ◦ state(где_в_комнате, где_между_полом_и_по толком, где_ящик, где_банан). Один ход будет означать разрешенную (в рамках задачи) смену ситуации, например: ◦ % схватить ◦ move(state(center, on_box, center, no_banana), ◦ "Схватить", ◦ state(center, on_box, center, "Есть банан!")).

Формализация цели задачи Если у обезьяны есть банан, это успех ◦ success(state(_, _, _, Формализация цели задачи Если у обезьяны есть банан, это успех ◦ success(state(_, _, _, "Есть банан!")). В противном случае, нужно совершить действие, которое приведет к успеху ◦ success(Состояние 1) : ◦ move(Состояние 1, Ход, Состояние 2), ◦ success(Состояние 2). Цель заключается в отыскании цепочки шагов, приводящей к успеху из исходного состояния ◦ ? - success( state(at_door, on_floor, at_window, no_banana) ).

Реализация ходов Залезть (climb) Передвинуть ящик из P 1 в P 2 (shift(Положение 1, Реализация ходов Залезть (climb) Передвинуть ящик из P 1 в P 2 (shift(Положение 1, Положение 2)) Перейти из P 1 в P 2 (walk(Положение 1, Положение 2))

Сохранение истории шагов Надо изменить код, чтобы шаги добавлялись в список ◦ success(state(_, _, Сохранение истории шагов Надо изменить код, чтобы шаги добавлялись в список ◦ success(state(_, _, _, "Есть банан!"), []). ◦ success(Состояние 1, [Ход|Цепочка]) : ◦ move(Состояние 1, Ход, Состояние 2), ◦ success(Состояние 2, Цепочка). ◦ ? - success( state(at_door, on_floor, at_window, no_banana), Шаги), write(Шаги).

Задание на лабораторную работу Определиться с вариантом и сообщить преподавателю Разработать решение задачи и Задание на лабораторную работу Определиться с вариантом и сообщить преподавателю Разработать решение задачи и запрограммировать его на языке Prolog Продемонстрировать работу программы и объяснить, как она работает Cложность задачи ◦ Низкая – 5 баллов ◦ Средняя – 10 баллов ◦ Высокая – 15 баллов

Низкая сложность * Шары и лунки: вдоль доски расположены лунки, в каждой из которых Низкая сложность * Шары и лунки: вдоль доски расположены лунки, в каждой из которых лежит черный или белый шар. Одним ходом можно менять местами два соседних шара. Добиться того, чтобы сначала шли белые шары, а за ними – черные. Решить задачу за наименьшее число ходов. Перестановка матрицы: дано две одинаковые по размеру матрицы А и В. Определить, можно ли путем перестановки столбцов в одной из них получить другую. Матрицы задаются списком списков. Счастливые билеты: билет счастливый, если сумма первых и последних трех цифр одинакова (1+2+3 = 0+5+1). Найти все счастливые билеты из 6 цифр. Произведение: найти все трехзначные числа, произведение цифр которых равно 72. Обезьяна и коробки: обезьяна находится в запертой комнате. В комнате на полу лежат 3 коробки, а связка бананов свисает в центре с потолка так, что достать ее обезьяна может только с трех коробок. Найти последовательность действий обезьяны, в результате которой она достанет банан.

Средняя сложность ** Две кучи камней: в первой 3, во второй 2 камня. Игроки Средняя сложность ** Две кучи камней: в первой 3, во второй 2 камня. Игроки ходят по очереди. Ход состоит в том, что игрок или удваивает число камней в какой-то куче, или добавляет 3 камня в какую-то кучу. Игрок, после хода которого общее число камней в двух кучах становится больше 22, проигрывает. Какой из игроков выигрывает при безошибочной игре обоих игроков? Каким должен быть первый ход выигрывающего игрока? Африканские каникулы: каникулы Чауса продолжались N дней. По его наблюдениям: (1) дождь шел 7 раз либо с утра, либо к вечеру; (2) если дождь шел к вечеру, то с утра стояла солнечная погода; (3) 5 раз к вечеру устанавливалась солнечная погода; (4) 6 paз с утра стояла солнечная погода. Сколько дней продолжались каникулы Чауса? Ревнивые мужья: четырем мужьям и их женам необходимо переплыть через реку. Лодка вмещает не более 2 человек, причем на берегу женщина может оставаться либо одна, либо в обществе других дам. Самый большой треугольник: из заданного множества точек найти три таких, которые образуют треугольник с

Средняя сложность ** Дама сдавала в багаж: диван, чемодан, саквояж, картину, корзину, картонку и Средняя сложность ** Дама сдавала в багаж: диван, чемодан, саквояж, картину, корзину, картонку и маленькую собачонку. Диван весил столько же, сколько чемодан и саквояж вместе, и столько же, сколько картина и картонка вместе. Картина, корзина и картонка весили поровну, причем каждая из них – больше, чем собачонка. Когда выгружали багаж, дама заявила, что собака не той породы. При проверке оказалось, что собака перевешивает диван, если к ней на весы добавить саквояж или чемодан. Требуется написать программу, которая доказала бы справедливость претензии дамы. Восемь шахматных фигур (без пешек) одного цвета необходимо расставить на шахматной доске так, чтобы они в сумме угрожали максимальному количеству полей (не обязательно свободных). Поле, битое двумя и более фигурами, учитывается единожды. Магический квадрат: расставьте числа в квадрате так, чтобы сумма чисел по всем горизонталям и вертикалям

Высокая сложность *** Кувшины: имеются два кувшина 8 и 5 литров и бочка, откуда Высокая сложность *** Кувшины: имеются два кувшина 8 и 5 литров и бочка, откуда набирают воду. Задача заключается в том чтобы, найти последовательность переливаний, после которой в большом кувшине окажется требуемое количество литров воды (целое). Ход ферзя: ферзь находится на поле С 3 шахматной доски. Необходимо найти последовательность из 15 ходов, завершающуюся в поле F 6 и обеспечивающую прохождение всех полей доски. При этом ни в одном поле нельзя останавливаться более 1 раза (пересекать можно) Гонцы: дано N городов, между некоторыми из них существуют дороги заданной длины. По некоторым заданным городам распределены K гонцов. Они должны совместно обойти все N городов (например, чтобы сообщить царский указ) за минимальное время (т. е. за минимальное время новость должна быть известна во всех городах). Считается, что скорость всех гонцов одинакова. Написать предикат для нахождения пути для каждого гонца. Развес чая: как развесить 20 кг чая в 10 коробок по 2 кг за девять развесов, имея только гири на 5 кг и 9 кг?

Лабораторная работа № 4 Вариант № 2 Л/р № 3 для бакалавров Методы неградиентной Лабораторная работа № 4 Вариант № 2 Л/р № 3 для бакалавров Методы неградиентной оптимизации. Генетические алгоритмы.

Задание лабораторной работы Для запуска инструмента оптимизации, наберите в командной строке MATLAB ◦ optimtool('ga') Задание лабораторной работы Для запуска инструмента оптимизации, наберите в командной строке MATLAB ◦ optimtool('ga') Проверьте работу генетического алгоритма и его параметров на задаче минимизации одной из классических функций (см. ниже) ◦ Для запуска укажите название функции в поле Fitness function ◦ Текущие результаты расчета показываются на графике при выбранной опции “Best fitness” в группе Options – Plot functions Напишите собственную функцию ◦ Создайте собственный файл функции (пример см. http: //www. mathworks. com/help/toolbox/gads/brdvu 8 r. ht ml)

Классические функции Кеннет Де Йонг (Kenneth De Jong) предложил набор функций, который де-факто стал Классические функции Кеннет Де Йонг (Kenneth De Jong) предложил набор функций, который де-факто стал стандартом для проверки работоспособности алгоритмов оптимизации ◦ Сферическая (сумма x 2) – @dejong 1 fcn ◦ Седло Розенброка (банановая функция) – @dejong 2 fcn ◦ «Лисьи норы» Шекеля – @dejong 5 fcn – 65. 536 ≤ xi ≤ 65. 536 ◦ Находятся в папке toolboxgadsdemos

Функция Растригина Множество локальных экстремумов Единственный глобальный минимум в точке (0; 0) @rastriginsfcn Функция Растригина Множество локальных экстремумов Единственный глобальный минимум в точке (0; 0) @rastriginsfcn

Приложение Пример решения задачи «Сумма слов» Приложение Пример решения задачи «Сумма слов»

Приложение. Пример лабораторной работы Ребус «Сумма слов» для частной задачи: ◦ DONALD + GERALD Приложение. Пример лабораторной работы Ребус «Сумма слов» для частной задачи: ◦ DONALD + GERALD = ROBERT Задача: найти такую подстановку цифр 0. . 9 вместо букв, чтобы выполнялось математическое равенство Цифры не должны повторяться

Решение Представим числа в виде списков цифр Цель запишем как ◦ ? - sum([D, Решение Представим числа в виде списков цифр Цель запишем как ◦ ? - sum([D, O, N, A, L, D], [G, E, R, A, L, D], [R, O, B, E, R, T]). Необходимо найти конкретизацию 10 переменных ◦ A, B, D, E, G, L, N, O, R, T Отношения в i-м разряде ◦ ◦ D 3 i = (C 1 + D 1 i + D 2 i) mod 10 C = (C 1 + D 1 i + D 2 i) div 10 Cr – перенос из младшего разряда Cl – перенос в старший разряд

Решение (продолжение) Изначально переменные не конкретизированы Необходимо задать начальный список доступных цифр и отслеживать Решение (продолжение) Изначально переменные не конкретизированы Необходимо задать начальный список доступных цифр и отслеживать конкретизацию переменных Для ведения списков формулируем предикат sum 1: ◦ sum 1(Число 1, Число 2, Число, Cr, Cl, Цифры1, Цифры), где Число 1, Число 2, Число – наши числа в виде списков Cr – перенос справа, Cl – перенос влево Цифры1 – набор доступных цифр Цифры – набор использованных цифр Тогда целевой предикат запишется в виде

Решение (продолжение) Без потери общности считаем, что все числа одинаковой длины (пустые разряды можно Решение (продолжение) Без потери общности считаем, что все числа одинаковой длины (пустые разряды можно заполнить нулями) Полученное отношение уже можно использовать рекурсивно и определить его для двух случаев: 1. Все три «числа» – пустые списки, тогда: sum 1([], [], 0, 0, Digits). 2. Числа имеют вид [D 1|N 1], [D 2|N 2], [D|N], тогда 1. N 1, N 2 и N сами должны удовлетворять отношению sum 1 2. D 1, D 2 и D должны удовлетворять приведенным выше отношениям sum 1([D 1|N 1], [D 2|N 2], [D|N], Cr, Cl, Digits 1, Digits) : sum 1(N 1, N 2, N, Cr, Cd, Digits 1, Digits 2), sumdigits(D 1, D 2, Cd, D, Cl, Digits 2, Digits).

Решение (продолжение) Отношение sumdigits должно производить суммирование конкретных цифр ◦ Если хотя бы одна Решение (продолжение) Отношение sumdigits должно производить суммирование конкретных цифр ◦ Если хотя бы одна из переменных D 1, D 2 или D не конкретизирована, надо присвоить ей значение цифры и удалить эту цифру из множества доступных sumdigits(D 1, D 2, Cr, D, Cl, Digits 1, Digits) : removed(D 1, Digits 2), removed(D 2, Digits 3), removed(D, Digits 3, Digits), S is D 1+D 2+Cr, D is S mod 10, Cl is S // 10. ◦ На «выходе» правила будем иметь Cl – перенос влево и Digits – множество еще не распределенных цифр

Решение (окончание) Отношение removed должно убирать конкретизированные цифры из множества доступных для использования ◦ Решение (окончание) Отношение removed должно убирать конкретизированные цифры из множества доступных для использования ◦ Если переменная не конкретизирована, то и убирать нечего removed(Elem, List) : - not(var(Elem)), !. ◦ В противном случае стандартная процедура removed(Elem, [Elem|List], List). removed(Elem, [A|List], [A|List 1]) : removed(Elem, List 1).