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

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

Рубрика Программирование, компьютеры и кибернетика
Вид курсовая работа
Язык русский
Дата добавления 21.02.2019
Размер файла 921,1 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Размещено на http://www.allbest.ru/

МИНОБРНАУКИ РФ

Пензенский государственный университет

Кафедра «Автоматики и телемеханики»

Пояснительная записка к курсовому проекту

по дисциплине «Основы искусственного интеллекта»

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

Выполнил студент гр. 14ПА1 Евлюшин Н.С.

Пенза, 2017

Реферат

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

Объектом исследования является робот.

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

Одним из методов исследования, использованных в курсовом проекте, является компьютерное моделирование.

Содержание

Введение

1. Решение прямой и обратной задачи

1.1 Многослойная нейронная сеть прямой передачи сигнала

1.2 Обучение многослойного персептрона

2. Оптимизация с использованием генетических алгоритмов

2.1 Общий вид генетического алгоритма

2.2 Генетические операторы

2.3 Операторы отбора особей в новую популяцию

2.4 Оптимизация функции одной переменной

2.5 Оптимизация функции многих переменных

Заключение

Список использованных источников

Приложение

Введение

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

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

1. Решение прямой и обратной задачи

Для робота, кинематическая схема которого показана на рисунке 1, аналитически решить прямую и обратную задачу о положениях.

Рисунок 1 - Кинематическая схема робота

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

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

(1)

Для решения обратной задачи воспользуемся теоремой косинусов треугольника для OAB

(2)

где ,

Из первого уравнения (2) выразим угол ц2, а из второго - угол AOB

,(3)

,(4)

Тогда угол ц1 будет равен

,(5)

1.1 Многослойная нейронная сеть прямой передачи сигнала

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

Простейшая сеть имеет структуру прямой передачи сигнала: Сигналы проходят от входов через скрытые элементы и в конце концов приходят на выходные элементы. Такая структура имеет устойчивое поведение. Если же сеть рекуррентная (т.е. содержит связи, ведущие назад от более дальних к более ближним нейронам), то она может быть неустойчива и иметь очень сложную динамику поведения. Рекуррентные сети представляют большой интерес для исследователей в области нейронных сетей, однако при решении практических задач, по крайней мере до сих пор, наиболее полезными оказались структуры прямой передачи, и именно такой тип нейронных сетей моделируется в пакете ST Neural Networks.

Типичный пример сети с прямой передачей сигнала показан на рисунке 2. Нейроны регулярным образом организованы в слои. Входной слой служит просто для ввода значений входных переменных. Каждый из скрытых и выходных нейронов соединен со всеми элементами предыдущего слоя. Можно было бы рассматривать сети, в которых нейроны связаны только с некоторыми из нейронов предыдущего слоя; однако, для большинства приложений сети с полной системой связей предпочтительнее, и именно такой тип сетей реализован в пакете ST Neural Networks.

Рисунок 2

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

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

1.2 Обучение многослойного персептрона

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

Самый известный вариант алгоритма обучения нейронной сети - так называемый алгоритм обратного распространения (backpropagation; см. Patterson, 1996; Haykin, 1994; Fausett, 1994). Существуют современные алгоритмы второго порядка, такие как метод сопряженных градиентов и метод Левенберга-Маркара (Bishop, 1995; Shepherd, 1997) (оба они реализованы в пакете ST Neural Networks), которые на многих задачах работают существенно быстрее (иногда на порядок). Алгоритм обратного распространения наиболее прост для понимания, а в некоторых случаях он имеет определенные преимущества.

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

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

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

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

На основе этого метода решим поставленные задачи, используя многослойную нейронную сеть прямой передачи сигнала. Для этого воспользуемся Neural Networks пакета Matlab.

Чтобы запустить NNTool, необходимо выполнить одноим?нную команду в командном окне MATLAB: >>nntool после этого появится главное окно NNTool, именуемое «Network/ Data Manager» (рис. 3).

Панель "Сети и данные" (Networks and Data) имеет функциональные клавиши со следующими назначениями:

· Помощь (Help) - краткое описание управляющих элементов данного окна;

· Новые данные (New Data…) - вызов окна, позволяющего создавать новые наборы данных;

· Новая сеть (New Network…)- вызов окна создания новой сети;

· Импорт (Import…)- импорт данных из рабочего пространства MATLAB в пространство переменных NNTool;

· Экспорт (Export…)- экспорт данных из пространства переменных NNTool в рабочее пространство MATLAB;

· Вид (View)- графическое отображение архитектуры выбранной сети;

· Удалить (Delete)- удаление выбранного объекта.

На панели "Только сети" (Networksonly) расположены клавиши для работы исключительно с сетями. При выборе указателем мыши объекта любого другого типа, эти кнопки становятся неактивными.

Рисунок 3

В данном курсовом проекте мы задаем следующие параметры для сети:

Первоначально импортируем входные данные и целевые значения с рабочей области matlab'a (Import…).

Тип нейронной сети - метод обратного распространения ошибки (Feed-forward back prop).

Training function (функция тренировки) - trainbr (регуляризация Bayesian),

Adaption learning function (функция выполнения) - mse (средне-квадратичная ошибка).

Количество слоев нейронной сети равно двум. В первом слое напишем 11 нейронов (Numberof и выберем тангенсальную функцию активации, для второго слоя функция активации - прямая линия.

Далее жмем кнопку create.

Теперь необходимо обучить сеть. Для этого открываем нашу созданную сеть и выбираем вкладку train. Выбираем входные данные и целевые значения - inputs и targets соответственно. Теперь нажимаем на вкладку training parameters. Вписываем в поля параметров желаемые значения нажимаем train network.

Завершить процесс обучения можно, руководствуясь разными критериями. Возможны ситуации, когда предпочтительно остановить обучение, полагая достаточным некоторый интервал времени. С другой стороны, объективным критерием является уровень ошибки. На вкладке "Параметры обучения" (Training parameters) для нашей сети можно установить следующие поля:

Количество эпох (epochs) - определяет число эпох (интервал времени), по прошествии которых обучение будет прекращено. Эпохой называют однократное представление всех обучающих входных данных на входы сети.

Достижение цели или попадание (goal)- здесь зада?тся абсолютная величина функции ошибки, при которой цель будет считаться достигнутой.

Период обновления (show)- период обновления графика кривой обучения, выраженный числом эпох.

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

По результатам решения задач создадим таблицу с исходными и полученными результатами (таблица 1).

Таблица 1

Исходные данные

Решение обратной задачи с помощью нейронной сети

Решение прямой задачи с помощью нейронной сети

x

y

ц1

ц2

x

y

0

0,90

2,0519

1,0889

0,0000

0,9000

0,09

0,81

2,0612

1,3734

0,0900

0,8100

0,18

0,72

2,0116

1,5827

0,1800

0,7200

0,27

0,63

1,9093

1,732

0,2700

0,6300

0,36

0,54

1,76

1,8231

0,3600

0,5400

0,45

0,45

1,5737

1,8539

0,4500

0,4500

0,54

0,36

1,3652

1,8231

0,5400

0,3600

0,63

0,27

1,1483

1,732

0,6300

0,2700

0,72

0,18

0,9307

1,5827

0,7200

0,1800

0,81

0,09

0,7117

1,3734

0,8100

0,0900

0,90

0

0,4811

1,0889

0,9000

0,0000

Ошибка сети при решении прямой и обратной задачи о положениях:

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

2. Оптимизация с использованием генетических алгоритмов

Генетические алгоритмы основаны на моделировании процессов биологической эволюции и относятся к стохастическим методам.

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

Хромосома - вектор (vector) чисел или строка, состоит из набора генов.

Гены (genes) - элементы хромосомы.

Скрещивание (crossover) или кроссинговер - обмен фрагментами двух хромосом.

Мутация (mutation) - случайное изменение гена.

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

Популяция (population) - набор особей.

Поколение (generation) - итерация эволюционного процесса поиска решения задачи.

В ходе каждой итерации особь оценивается с помощью функции пригодности (fitnessfunction).

2. Общий вид генетического алгоритма

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

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

Рис. 4. Структура хромосомы

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

Таблица 2. Код Грея

Целое

Двоичный код

Код Грея

Целое

Двоичный код

Код Грея

0

0000

0000

9

1001

1101

1

0001

0001

10

1010

1111

2

0010

0011

11

1011

1110

3

0011

0010

12

1100

1010

4

0100

0110

13

1101

1011

5

0101

0111

14

1110

1001

6

0110

0101

15

1111

1000

7

0111

0100

8

1000

1100

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

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

2. Каждая хромосома популяции xi оценивается функцией эффективности f(xi), и ей в соответствии с этой оценкой присваивается вероятность воспроизведения Pi. Вычисление коэффициента выживаемости (fitness).

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

4. Если найдено удовлетворительное решение, процесс останавливается, иначе продолжается с шага 2.

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

2.2 Генетические операторы

Стандартные операторы для всех типов генетических алгоритмов это: селекция, скрещивание и мутация.

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

.

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

При турнирной селекции формируется случайное подмножество из элементов популяции и среди них выбирается один элемент с наибольшим значением целевой функции. Турнирный отбор реализует n турниров, чтобы выбрать n особей. Каждый турнир построен на выборке k элементов из популяции, и выбора лучшей особи среди них. Наиболее распространен турнирный отбор с k=2.

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

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

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

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

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

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

Простейший одноточечный кроссинговер (рисунок 5) производит обмен частями, на которые хромосома разбивается точкой кроссинговера. Одноточечный кроссовер работает следующим образом. Сначала, случайным образом выбирается одна из l-1 точек разрыва. Точка разрыва - участок между соседними битами в строке. Обе родительские структуры разрываются на два сегмента по этой точке. Затем, соответствующие сегменты различных родителей склеиваются и получаются два генотипа потомков. Двухточечный кроссинговер обменивает кусок строки, попавшей между двумя точками. Предельным случаем является равномерный кроссинговер, в результате которого все биты хромосом обмениваются с некоторой вероятностью. Этот оператор служит для исследования новых областей пространства и улучшения существующих (приспособление).

Рисунок 5. Кроссинговер

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

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

Рисунок 6. Мутация

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

Работа ГА представляет собой итерационный процесс, который продолжается до тех пор, пока не выполнятся заданное число поколений или какой-либо иной критерий останова. На каждом поколении ГА реализуется отбор пропорционально приспособленности, кроссовер и мутация. Блок-схема генетического алгоритма достаточно проста (рисунок 7)

Рисунок 7. Блок-схема генетического алгоритма

2.3 Операторы отбора особей в новую популяцию

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

Отбор усечением (Truncation selection). При отборе усечением используют популяцию, состоящую как из особей-родителей, так и особей-потомков, отсортированную по возрастанию значений функции пригодности особей. Число особей для скрещивания выбирается в соответствии с порогом T [0; 1]. Порог определяет, какая доля особей, начиная с самой первой (самой пригодной), будет принимать участие в отборе. В принципе, порог можно задать и числом больше 1, тогда он будет просто равен числу особей из текущей популяции, допущенных к отбору. Среди особей, попавших «под порог», случайным образом выбирается одна и записывается в новую популяцию. Процесс повторяется N раз, пока размер новой популяции не станет равен размеру исходной популяции. Новая популяция состоит только из особей с высокой пригодностью, причем одна и та же особь может встречаться несколько раз, а некоторые особи, имеющие пригодность выше пороговой, могут не попасть в новую популяцию.

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

Элитарный отбор (Elite selection). Создается промежуточная популяция, которая включает в себя как родителей, так и их потомков. Члены этой популяции оцениваются, а за тем из них выбираются N самых лучших (пригодных), которые и войдут в следующее поколение. Зачастую данный метод комбинируют с другими -- выбирают в новую популяцию, например, 10 % «элитных» особей, а остальные 90 % -- одним из традиционных методов селекции. Иногда эти 90 % особей создают случайно, как при создании начальной популяции перед запуском работы генетического алгоритма. Использование стратегии элитизма оказывается весьма полезным для эффективности ГА, так как не допускает потерю лучших решений. К примеру, если популяция сошлась в локальном максимуме, а мутация вывела одну из строк в область глобального, то при предыдущей стратегии весьма вероятно, что эта особь в результате скрещивания будет потеряна, и решение задачи не будет получено. Если же используется элитизм, то полученное хорошее решение будет оставаться в популяции до тех пор, пока не будет найдено еще лучшее.

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

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

Метод Больцмана, или метод отжига (Bolzman selection). В данном методе вероятность отбора в новую популяцию зависит от управляющего параметра -- температуры T.

Обычно вероятность попадания в новую популяцию вычисляется по следующей формуле:

,

где f(i) и f(j) -- значения целевой функции i и j особей, соответственно.

Номера особей i и j выбираются случайно. Если значение p окажется больше случайного числа на интервале (0; 1), то в новую популяцию попадет особь f(i), иначе f(j).

В некоторых случаях применяется альтернативная формула:

,

где -- среднее по популяции на итерации с номером t.

Если p окажется больше случайного числа на интервале (0; 1), то особь f(i) попадет в новую популяцию.

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

2.4 Оптимизация функции одной переменной

Существуют 4 основные функции для работы с алгоритмом:

ga -- функция для нахождения минимума целевой функции;

gaoptimget -- возвращает параметры используемого генетического алгоритма;

gaoptimset -- устанавливает параметры генетического алгоритма;

gatool -- открывает окно Genetic Algorithm Tool.

Для того, чтобы применить ГА к поставленной функции цели, необходимо в первую очередь записать её в M-file и сохранить в текущей папке. Для настройки генетического алгоритма используется функция gaoptimset. Она позволяет построить ГА комбинируя, операторы по желанию пользователя.

Задана следующая функция , оптимизировать ее на отрезке [-1,1].

Установим параметры генетического алгоритма (ГА) таким образом :

options = gaoptimset( 'PopInitRange', [-1;1],...

'PopulationSize', 50,...

'Generations', 100,...

'TolFun', 0,...

'PlotFcns', @gaplotbestf,...

'Display', 'final');

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

Optimization terminated: average change in the fitness value less than options. TolFun.

x1 = -0.1016

fval = -0.6587

Генетический алгоритм нашел минимум функции при этом написал нам по какой причине завершен поиск. В данном случае достигнута точность TolFun.

Решение найденное с помощью стандартного решателя:

x2 = -0.1017

fval = -0.6587

2.5 Оптимизация функции многих переменных

Практически оптимизация многих переменных ничем не отличается от оптимизации функции одной переменной, кроме того что 4-x и более n мерное пространство графически не представить. При оптимизации функции двух переменных график представляет из себя поверхность, а минимум углубление в нем (если есть). Итак, дана следующая функция:

, оптимизировать ее на отрезке [-4;4].

Установим параметры генетического алгоритма (ГА) таким образом :

options = gaoptimset( 'PopInitRange', [-1 -1;1 1],...

'PopulationSize', 20,...

'Generations', 60,...

'TolFun', 1e-20,...

'PlotFcns', @gaplotbestf,...

'Display', 'final');

Запустим программу и получим следующий результат :

Optimization terminated: maximum number of generations exceeded.

x1 = 1.0e-05 *0 -0.6264

fval = 7.6978e-22

ГА нашел решение, причина остановки достигнуто максимальное число поколений.

Решение найденное с помощью стандартного решателя

x2 = 1.0e-04 * 0.3206 0.2087

fval = 1.1517e-18

Заключение

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

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

Список использованных источников

1. Панченко Т.В. Генетические алгоритмы [Текст] : учебно-методическое пособие / под ред. Ю.Ю. Тарасевича. -- Астрахань : Издательский дом «Астраханский университет», 2007.

2. Медведев В.С., Потемкин В.Г. Нейронные сети. MATLAB6. -- М.: ДИАЛОГ_МИФИ, 2002. -- 496с.

3. Beale M.H., Hagan M.T., Demuth H.B. Neural Network Toolbox. User's Guide.-- Natick: Math Works, Inc., 2014.

4. Яхъяева Г.Э. Нечеткие множества и нейронные сети/ Учебное пособие. - Москва: Бином, 2006.

многослойный нейронный сеть генетический

Приложение А

Листинг программы в Matlab 2012

Решение прямой и обратной задач

%% Аналитическое решение

clc,

clearall,

closeall,

% Решение обратной задачи

% Исходные данные

L1 = 0.58; L2 = 0.47;

x = [ 0 0.09 0.18 0.27 0.36 0.45 0.54 0.63 0.72 0.81 0.90],

y = [0.90 0.81 0.72 0.63 0.54 0.45 0.36 0.27 0.18 0.09 0 ],

%АНАЛИТИЧЕСКОЕ РЕШЕНИЕ

%Решение обратной задачи

FI2 = pi - acos((L1.^2+L2.^2-x.^2-y.^2)./(2.*L1.*L2));

FI1 = atan(y./x)+acos((L1.^2-L2.^2+x.^2+y.^2)./(2.*L1.*sqrt(x.^2+y.^2)));

disp('Углы в радианах:'),

FI1,FI2,

figure(1),

plot(x,y,'-*'),grid on,holdon, %Зависимость y=f(x)

% Решение прямой задачи

x1 = L1.*cos(FI1)+L2.*cos(FI1-FI2);

y1 = L1.*sin(FI1)+L2.*sin(FI1-FI2);

x1,y1,

plot(x1,y1,'r-*'),

% legend('Исходные данные','Решение прямой задачи'),

holdoff,

figure(2),

plot(FI1,FI2,'-*',1.6,2),grid on,

% Решение обратной задачи с помощью нейронной сети

disp('-----------------------------------------------------'),

disp('РЕШЕНИЕ С ПОМОЩЬЮ НЕЙРОННОЙ СЕТИ'),

disp('Решение обратной задачи:'),

load('net1.mat');

net1 = network1;

p=[x;y], % Вход сети

t=[FI1;FI2], % Желаемый выход сети

a=sim(net1,p),% Выходсети

e1=t-a, % Ошибкасети

figure(3), %Зависимость \phi_{2} = \psi(\phi_{1})

plot(a(1,:),a(2,:),'-*'),grid on,holdon,

%% Решение прямой задачи с помощью нейронной сети

load('net3.mat');

net2 = network1;

p=[FI1;FI2], % Вход сети

t=[x;y], % Желаемый выход сети

a=sim(net2,p),% Выходсети

e2=t-a, % Ошибка сети

figure(4), % Решение с помощью нейронной сети',' Зависимость y=f(x).'

plot(a(1,:),a(2,:),'-*'),grid on,holdon,

x = 0:0.01:1;

y = abs(-1:0.01:0);

p=[x;y];

a=sim(net1,p);

FI1 = atan(y./x)+acos((L1.^2-L2.^2+x.^2+y.^2)./(2.*L1.*sqrt(x.^2+y.^2)));

view_movement(L1,x,y,FI1,5);% Аналитическое решение

view_movement(L1,x,y,a(1,:),6); % Решение с помощью нейронной сети

functionview_movement(L1,x,y,FI1,nfig)

fig = figure(nfig);

close(fig);

figure(nfig);

pause(3);

holdon;gridon;

x1 = L1.*cos(FI1);

y1 = L1.*sin(FI1);

plot(-0.5,-0.1,1.1,0,0,1.1);

n = length(x);

fori=1:n

plot(x(i),y(i),'*',x1(i),y1(i),'*');

plot(0,0,'mo','MarkerEdgeColor','black');

line([0 x1(i)],[0 y1(i)]);

line([x1(i) x(i)],[y1(i) y(i)]);

h1 = line(x1(1:i),y1(1:i),'Color','g');

h2 = line(x(1:i),y(1:i),'Color','r');

pause(0.1);

plot(x(i),y(i),'w*',x1(i),y1(i),'w*');

line([0 x1(i)],[0 y1(i)],'Color','w');

line([x1(i) x(i)],[y1(i) y(i)],'Color','w');

end

legend([h1 h2],'Траектория движения 1-го звена',' Траектория движения 2-го звена'),

plot(x(n),y(n),'*',x1(n),y1(n),'*');

line([0 x1(n)],[0 y1(n)]);

line([x1(n) x(n)],[y1(n) y(n)]);

holdoff;

end

2.1 Оптимизация функции одной переменной

function y = my_fun1(x)

y=(1/tan(x.^2+1)).*(sin(x./2)-cos(x./2));

clc,

clearall,

closeall,

%% Нахождение минимума функции с помощью ГА

options = gaoptimset( 'PopInitRange', [-0.8;1],...

'PopulationSize', 50,...

'Generations', 100,...

'TolFun', 0,...

'PlotFcns', @gaplotbestf,...

'Display', 'final');

n=1; % количество переменных функции

[x1 ,fval] = ga(@my_fun1,n,[],[],[],[],[],[],[],options);

x1,fval,

figure(1),

x1 = roundn(x1,-2);

y1 = roundn(fval,-2);

% Стандартный решатель

M = -1;

x2 = fminsearch(@my_fun1,M),

fval = my_fun1(x2),

%% Построение графика

dt=0.01;

x=-0.8:dt:1;

fori=1:length(x)

y(i)=my_fun1(x(i));

end

figure(1),

plot(x,y,0,-0.1),grid on,holdon;

plot(x1,y1,'r*'),

%% Построение минимума функции

x=x1;

y=y1;

plot(x,y,'+',...

'LineWidth',2,...

'MarkerSize',25,...

'MarkerEdgeColor','red',...

'MarkerFaceColor','red'),

plot(x,y,'gs',...

'LineWidth',2,...

'MarkerSize',12,...

'MarkerEdgeColor','white',...

'MarkerFaceColor','black'),

d=['Минимум:'];

a=[' X: ',num2str(x)];

b=[' Y: ',num2str(y)];

text(x+0.10,y-0.04,{d a b}),

2.1 Оптимизация функции многих переменных

function z = my_fun2(x)

z=x(1,1).^4+(x(1,2).^4)*0.5;

end

clc,

clearall,

closeall,

%% Нахождение минимума функции с помощью ГА

dx=0.05;

x=-1:dx:2;

options = gaoptimset( 'PopInitRange', [-1 -1;1 1],...

'PopulationSize', 20,...

'Generations', 60,...

'TolFun', 1e-20,...

'PlotFcns', @gaplotbestf,...

'Display', 'final');

n=2; % количество переменных функции

[x1,fval] = ga(@my_fun2,n,[],[],[],[],[-1 -1],[1 1],[],options);

x1,fval,

% Стандартный решатель

M = [0.5 0.5];

x2 = fminsearch(@my_fun2,M),

fval = my_fun2(x2),

%% Построение графика

[X1,X2] = meshgrid(x);

fori=1:length(x)

for j=1:length(x)

Z(i,j)=my_fun2([X1(i,j), X2(i,j)]);

end

end

figure(2),

surf(X1,X2,Z),

colormapwinter,

holdon,

%% Построение минимума функции

x=x1(1,1);

y=x1(1,2);

z=fval;

plot3(x,y,z,'+',...

'LineWidth',2,...

'MarkerSize',25,...

'MarkerEdgeColor','red',...

'MarkerFaceColor','red'),

plot3(x,y,z,'gs',...

'LineWidth',2,...

'MarkerSize',12,...

'MarkerEdgeColor','white',...

'MarkerFaceColor','black'),

d=['Минимум:'];

a=['X: ',num2str(x)];

b=['Y: ',num2str(y)];

c=['Z: ',num2str(z)];text(x+0.23,y,z,{d a b c}),

Приложение В

Моделирование в Matlab 2012

Решение прямой и обратной задач

а) б)

Рисунок 1- а) зависимость y=f(x); б) зависимость ц2=ш(ц1)

а) б)

Рисунок 2 - а) зависимость ц2=ш(ц1); б) зависимость y=f(x)

Для проверки нейронного аппроксиматора построим траекторию движения схвата и его звеньев при аналитическом решении и решении нейронной сетью (рисунки 3-4)

Рисунок 3 - Траектория движения при аналитическом решении

Рисунок 4 - Траектория движения при решении задачи нейронной сетью

Рисунок 5 - модель нейронной сети Simulink

Рисунок 6 - модель нейронной сетиNeuralNetwork

Оптимизация функции одной переменной

Рисунок 7

Оптимизация функции многих переменных

Рисунок 8 - Генетический алгоритм

Рисунок 9 - График функции

Размещено на Allbest.ru

...

Подобные документы

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

    реферат [1,2 M], добавлен 24.05.2015

  • Разработка программ с помощью Turbo Pascal для решения задач, входящих в камеральные работы маркшейдера: решение обратной геодезической задачи и системы линейных уравнений методом Гаусса, определение координат прямой угловой засечки и теодолитного хода.

    курсовая работа [1,5 M], добавлен 05.03.2013

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

    курсовая работа [11,4 M], добавлен 31.03.2015

  • Методика решения некоторых геодезических задач с помощью программ MS Excel, MathCad, MatLab и Visual Basic. Расчет неприступного расстояния. Решение прямой угловой засечки по формулам Юнга и Гаусса. Решение обратной засечки по формулам Пранис-Праневича.

    курсовая работа [782,2 K], добавлен 03.11.2014

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

    задача [3,2 M], добавлен 15.02.2010

  • История появления термина "искусственный интеллект". Приоритетные направления его применения: генерация речи, обработка визуальной информации. Нейронные, байесовы, иммунные сети, теории хаоса - примеры реализации современных интеллектуальных систем.

    реферат [27,2 K], добавлен 14.01.2011

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

    курсовая работа [131,6 K], добавлен 22.02.2015

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

    курсовая работа [391,4 K], добавлен 20.02.2008

  • Математическая модель задачи: расчет объема производства, при котором средние постоянные издержки минимальны. Построение графика функции с помощью графического редактора MS Excel. Аналитическое исследование функции, зависящей от одной переменной.

    курсовая работа [599,7 K], добавлен 13.02.2010

  • Прогнозирование на фондовом рынке с помощью нейронных сетей. Описание типа нейронной сети. Определение входных данных и их обработка. Архитектура нейронной сети. Точность результата. Моделирование торговли. Нейронная сеть прямого распространения сигнала.

    дипломная работа [2,7 M], добавлен 18.02.2017

  • Преобразование формулы и решение ее с помощью Метода Эйлера. Моделирование метода оптимизации с функцией Розенброка. Поиск модели зашумленного сигнала. Нахождение минимума заданной целевой функции методом покоординатного спуска нулевого порядка.

    курсовая работа [1,2 M], добавлен 21.12.2013

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

    эссе [16,9 K], добавлен 23.06.2019

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

    дипломная работа [4,1 M], добавлен 25.02.2015

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

    презентация [65,3 K], добавлен 14.08.2013

  • Нейронные сети и оценка возможности их применения к распознаванию подвижных объектов. Обучение нейронной сети распознаванию вращающегося трехмерного объекта. Задача управления огнем самолета по самолету. Оценка экономической эффективности программы.

    дипломная работа [2,4 M], добавлен 07.02.2013

  • Получение изображения объекта с помощью оптико-электронных систем, построенных на основе ПЗС-приемника. Методы обработки первичной измерительной информации. Реализация алгоритма обработки графической информации с помощью языка программирования Python.

    лабораторная работа [1,1 M], добавлен 30.05.2023

  • Решение нелинейного уравнения вида f(x)=0 с помощью программы Excel. Построение графика данной функции и ее табулирование. Расчет матрицы по исходным данным. Проведение кусочно-линейной интерполяции таблично заданной функции с помощью программы Mathcad.

    контрольная работа [1,8 M], добавлен 29.07.2013

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

    курсовая работа [27,9 K], добавлен 23.07.2011

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

    курсовая работа [1,0 M], добавлен 05.01.2013

  • Понятие искусственного нейрона и искусственных нейронных сетей. Сущность процесса обучения нейронной сети и аппроксимации функции. Смысл алгоритма обучения с учителем. Построение и обучение нейронной сети для аппроксимации функции в среде Matlab.

    лабораторная работа [1,1 M], добавлен 05.10.2010

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.