Решение прямой и обратной задач. Изучение генетических алгоритмов с помощью графического интерфейса
Графический интерфейс генетических алгоритмов. Нахождение глобального минимума функции переменной. Поиск аргументов с помощью генетических алгоритмов. Решение прямой, обратной задач. Изучение генетических алгоритмов в режиме командной строки MATLAB.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 29.02.2020 |
Размер файла | 2,7 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http: //www. allbest. ru/
Реферат
Пояснительная записка содержит 39 листов формата А4, 16 рисунков,
2 таблицы, 4 источника, 2 приложения.
ИСКУССТВЕННЫЙ ИНТЕЛЛЕКТ, ПРЯМАЯ ЗАДАЧА, ОБРАТНАЯ ЗАДАЧА, ОПТИМИЗАЦИЯ, МОДЕЛИРОВАНИЕ.
Цель работы - решение прямой и обратной задач аналитически и используя многослойную нейронную сеть. Изучение генетических алгоритмов с помощью графического интерфейса. Нахождение глобального минимума функции одной переменной. Обучить нейронную сеть распознаванию букв русского алфавита.
Задание 1.
Для робота, кинематическая схема которого показана на рис 1, аналитически решить прямую и обратную задачу о положениях.
№ |
L1 |
L2 |
Координаты схвата |
||||||||||||
16 |
0,32 |
0,31 |
x |
0 |
0.06 |
0.12 |
0.18 |
0.24 |
0.30 |
0.36 |
0.42 |
0.48 |
0.54 |
0.60 |
|
у |
0.60 |
0.54 |
0.48 |
0.42 |
0.36 |
0.30 |
0.24 |
0.18 |
0.12 |
0.06 |
0 |
Задание 2.1
Изучение генетических алгоритмов с помощью графического интерфейса. Нахождение глобального минимума функции одной переменной.
Функция:
Отрезок [-2,2]
Задание 2.2
Нахождение глобального минимума функции двух аргументов с помощью генетических алгоритмов. Изучение генетических алгоритмов в режиме командной строки Matlab.
Отрезок [-2,2]
Задание 3
Обучить нейронную сеть распознаванию букв русского алфавита (буквы от Н до Т)
Содержание
- Введение
- 1. Решение прямой и обратной задачи
- 2. Решение прямой и обратной задачи
- 3. Решение прямой и обратной задачи с использованием многослойной нейронной сети
- 4. Оптимизация с использованием генетических алгоритмов
- 3. Задача распознавания букв русского алфавита (буквы от Н до Т)
- Заключение
- Список использованных источников
- Приложения
Введение
генетический алгоритм matlab аргумент
Искусственный интеллект сегодня одна из передовых областей исследований ученых. Причем рассматриваются как системы, созданные с его частичным использованием: например распознавание текстов, бытовые роботы, до возможности замены творческого труда человека искусственным. Сегодня в самых различных областях науки и техники требуется выполнение машинами тех задач, которые под силу были только человеку. На помощь тогда приходит искусственный интеллект, который может заменить человека в какой либо рутинной и скучной деятельности. Сегодня системы, как программные, так и аппаратные, созданные на основе искусственного интеллекта находят все большее применение в технике. Это и автомобили с электроникой с использованием ИИ, и новейшие роботы, участвующие в производстве чего-либо, и компьютерные программы, которые включают в себя и игры с ИИ. Цель создания полного ИИ, т.е. такого, которой мог бы выполнять действия по обработке информации наравне с человеком или лучше, - это прежде всего улучшение жизни человека и дальнейшее увеличение степени автоматизации производства.
Производственные системы с искусственным интеллектом являются системами не только качественно нового типа, но и системами, составляющими органичное звено в структуре современных автоматических систем управления производством
1. Решение прямой и обратной задачи
Для робота, кинематическая схема которого показана на рисунке 1, аналитически решить прямую и обратную задачу о положениях.
Рис. 1 Кинематическая схема робота
Прямая задача о положениях заключается в нахождении координат траектории (CD) движения схвата (точка В) по заданным углам поворота звеньев (ц1 и ц2 ), При решении обратной задачи нужно найти (ц1 и ц2 ) по заданным координатам траектории (CD) движения схвата,
Из очевидных геометрических соотношений можно записать для прямой задачи:
(1)
Для решения обратной задачи воспользуемся теоремой косинусов треугольника для OAB
(2)
где ,
Из первого уравнения (2) выразим угол ц2, а из второго - угол AOB
, (3)
, (4)
Тогда угол ц1 будет равен
, (5)
2. Решение прямой и обратной задачи
Вариант задания представлен в таблице 1.
Вариант задания
№ |
L1 |
L2 |
Координаты схвата |
||||||||||||
16 |
0,32 |
0,31 |
x |
0 |
0.06 |
0.12 |
0.18 |
0.24 |
0.30 |
0.36 |
0.42 |
0.48 |
0.54 |
0.60 |
|
y |
0.60 |
0.54 |
0.48 |
0.42 |
0.36 |
0.30 |
0.24 |
0.18 |
0.12 |
0.06 |
0 |
Для решения представленной задачи напишем код Matlab. В результате получаем:
Решение прямой задачи
Х= 0.0000 0.0600 0.1200 0.1800 0.2400 0.3000 0.3600 0.4200 0.4800 0.5400 0.6000
Y= 0.6000 0.5400 0.4800 0.4200 0.3600 0.3000 0.2400 0.1800 0.1200 0.0600 0.0000
Решение обратной задачи
ц1= 2.2312 2.2125 2.1482 2.0383 1.8853 1.6979 1.4905 1.2772 1.0673 0.8630 0.6605
ц2= 1.4256 1.6335 1.7967 1.9168 1.9914 2.0168 1.9914 1.9168 1.7967 1.6335
3. Решение прямой и обратной задачи с использованием многослойной нейронной сети
Для решения этой задачи воспользуемся NeuralNetworks пакета Matlab.
По результатам решения задач создадим таблицу с исходными и полученными результатами. Результаты представлены в таблице 2.
Результаты расчетов
Исходные данные |
Решение обратной задачи с помощью нейронной сети |
Решение прямой задачи с помощью нейронной сети |
||||
x |
y |
f1 |
f2 |
x |
y |
|
0 |
1 |
2,2316 |
1,426 |
0,0000 |
1,0000 |
|
0,1 |
0,9 |
2,211 |
1,6323 |
0,1000 |
0,9000 |
|
0,2 |
0,8 |
2,1499 |
1,7974 |
0,2000 |
0,8000 |
|
0,3 |
0,7 |
2,0389 |
1,9178 |
0,3000 |
0,7000 |
|
0,4 |
0,6 |
1,8835 |
1,9911 |
0,4000 |
0,6000 |
|
0,5 |
0,5 |
1,6967 |
2,0157 |
0,5000 |
0,5000 |
|
0,6 |
0,4 |
1,4917 |
1,9911 |
0,6000 |
0,4000 |
|
0,7 |
0,3 |
1,2793 |
1,9178 |
0,7000 |
0,3000 |
|
0,8 |
0,2 |
1,0671 |
1,7974 |
0,8000 |
0,2000 |
|
0,9 |
0,1 |
0,8603 |
1,6323 |
0,9000 |
0,1000 |
|
1 |
0 |
0,6618 |
1,426 |
1,0000 |
0,0000 |
Ошибка сети при решении прямой задачи (x и y):
X-xn ans = 1.0e-04 *
0.0756 -0.3448 0.5135 -0.2647 -0.2340 0.3984 -0.0740 -0.3658 0.4412 -0.2226 0.0404
Y-yn ans = 1.0e-05 *
-0.1141 0.5025 -0.6792 0.0663 0.6194 -0.2857 -0.4052 0.3543 0.0822
-0.1678 0.0477
Ошибка сети при решении обратной задачи (ц1 и ц2):
F1-f1n ans = -0.0004 0.0015 -0.0017 -0.0006 0.0017 0.0012 -0.0012 -0.0020 0.0003 0.0027 -0.0014
F2-f2n ans = -0.0004 0.0012 -0.0007 -0.0010 0.0003 0.0011 0.0003 -0.0010 -0.0007 0.0012 -0.0004
Решение прямой и обратной задачи с использованием многослойной нейронной сети, прошло успешно. Ошибка сети при решении прямой задачи не превышает 0.00007, при решении обратной задачи не превышает 0.003. Можно сделать вывод, что решение прямой и обратной задачи с помощью нейронной сети обладает хорошей точностью в обоих направления.
4. Оптимизация с использованием генетических алгоритмов
Нахождение глобального минимума функции одной переменной.
Теоретические сведения
Генетические алгоритмы основаны на моделировании процессов биологической эволюции и относятся к стохастическим методам.
Терминологический аппарат включает заимствованные из биологии и генетики термины, среди которых наиболее часто используются следующие.
Хромосома - вектор (vector) чисел или строка, состоит из набора генов. Гены (genes) - элементы хромосомы. Скрещивание (crossover) или кроссинговер - обмен фрагментами двух хромосом. Мутация (mutation) - случайное изменение гена. Особь или индивидуум (individual) - вариант решения задачи (приближенное решение), обычно задается одной хромосомой. Популяция (population) - набор особей. Поколение (generation) - итерация эволюционного процесса поиска решения задачи. В ходе каждой итерации особь оценивается с помощью функции пригодности (fitnessfunction).
Вариант задания представлен в таблице 3.
Вариант задания
№ |
Функции |
Отрезок |
|
16 |
[-2,2] |
Выполнение данного задания осуществляется с помощью графического интнерфейса gatoolпакета Matlab.
Для данного алгоритма установим следующие значения:
количествоособей (Population size) 50;
поколений (Generations):100;
начальный отрезок (initialrange): [-2;2].
При выполнении алгоритма в результате выводятся следующие данные:
Optimizationrunning.
Objectivefunctionvalue: -6.237318401721181
Optimization terminated: maximum number of generations exceeded.
Finalpoint:1.684
Оптимизация выполняется до тех пор, пока не превысит максимальное количество поколений (Generations).
В результате нахождения значения глобального минимума функции одной переменной, оно равняется -6.237318401721181
Задача глобальной оптимизации функции двух переменных .
№ |
Функции |
Отрезок |
|
16 |
[-4;4] |
Выполнение данного задания осуществляется с помощью графического интнерфейса gatoolпакета Matlab.
Для данного алгоритма установим следующие значения:
количествоособей (Population size) 100;
поколений (Generations):150;
начальный отрезок (initialrange):[-0.1 0.1;1.7 2.2]
При выполнении алгоритма в результате выводятся следующие данные:
Optimization running.
Objective function value: 3.8510013084242615E-5
Optimization terminated: average change in the fitness value less than options.TolFun.
Finalpoint0.0025941419643062822.005637414349972
Оптимизация выполнялась до тех пор, пока не была достигнута точностьTolFun.
В результате нахождения значений глобального минимума двух аргументов функции, они равняются 0.002594141964306282 и 2.005637414349972
Преобразуем графический интерфейс gatool в код Matlab и проводим численные эксперименты: изменение значений разных характеристик.
За основу берутся характеристики и функция, представленные в таблице 1.
Значения заданных характеристик:
ans = -0.0111 2.0144
Значения при изменении 'PopulationSize' до 300:
ans = 0.0001 2.0000
Значения при изменении 'PopInitRange ' до [-2;2]:
ans = 0.0050 1.9815
5. Задача распознавания букв русского алфавита (буквы от Н до Т)
Цель разрабатываемого шаблона, создать нейронную сеть, которая сможет распознавать визуальные образы букв русского алфавита. Программный код, который решает подобную задачу, присутствует в системе Matlab, как демонстрационная программа с названием appcr1. Подробно этот код разобран и пояснен в книге «Нейронные сети» В. С. Медведева, В. Г. Потемкина , а так же описан в работе И. С. Миронова, С. В. Скурлаева
В системе Matlab также присутствует инструмент NNtool, имеющий графический интерфейс пользователя, который существенно облегчает задачу и может быть легко использован даже неопытным пользователем. Подробно этот инструмент описан в работах В. Иванников, А. Ланнэ и П. А. Сахнюка и др.. В работе А. И. Шеремет, В. В. Перепелицы, А. М. Денисовой показан пример разработки нейронной сети для распознавания визуальных образов символов латинского алфавита с помощью NNtool. Зарубежные ученые также применяю искусственные нейронные сети в своих исследованиях. Рассмотрим встроенную функцию Matlab prprob, которая представляет собой матрицу, содержащую набор признаков букв латинского языка. Каждая буква имеет размерность 7 на 5 пикселей.
Создадим подобную матрицу с буквами русского алфавита. Для этого создадим в графическом редакторе шаблон каждого символа такой же размерностью (рис. 1, 2).
Рис. 2 Шаблон буквы А созданный в графическом редакторе
После того, как созданы шаблоны для каждой буквы, необходимо написать функцию, которая будет считывать необходимые признаки символов с графического файла в нужном нам формате.
Для этого выберем в командном меню: FileаNewаFunction M-file. Откроется графический редактор, в который необходимо вставить приведенный ниже код.
Код функции ImgRead:
function y = Imgread(x)
%UNTITLED Summary of this function goes here
% Detailed explanation goes here
img=imread(x);
img1=img(:,:,1)';
img2=reshape (img1,[7, 1]);
for i=1:7
if (img2(i,1)==0)
img2(i,1)=1;
end
end
for i=1:35
if (img2(i,1)==255)
img2(i,1)=0;
end
end
y=img2;
end
Использую данную функцию, создадим матрицу признаков русского алфавита, введя в окно команд следующий код:
images1=Imgread('C:\alphabet\А.png');
…
Images7=Imgread('C:\alphabet\Я.png');
RA=[images1,images2,images3,images4,images5,images6,images7,];
Заметим, что для того, чтобы код работал, шаблоны должны располагаться в каталоге C:\alphabet\, в качестве имени сам символ, с разрешением png, или внести соответствующие изменения в код.
Теперь есть матрица RA, которая содержит в себе набор признаков русского алфавита, и будет использоваться в роли входных данных при создании нейронной сети.
В качестве матрицы целей создадим единичную матрицу размерностью 33 на 33.
Для этого введем код. Так же объявим переменные, содержащие в себе количество строк и столбцов.
%Создаем переменные для создания нейронной сети в NNtool
P=double(RA);
T=eye(7);
[R,Q] = size(P);
[S2,Q] = size(T);
Для обучения сети нам понадобятся данные с шумом. Создадим эти данные, введя следующий код в окно команд:
%Создаем переменные для обучения на зашумленных данных нейронной сети в
%NNtool
P1=P;
T1=T;
for i=1:100
P1=[P1,P+rand(R,Q)*0.1,P+rand(R,Q)*0.2];
T1=[T1,T,T];
End
Для симуляции сети нам понадобится переменная, содержащая в себе набор признаков одной буквы, например, буквы И.
Введем соответствующую команду, заодно выведем на экран получившийся зашумленный образ (рис.3).
noisy10 = P(:,10) + randn(35,1)*0.2;
plotchar(noisy10); % Зашумленный символ
Рис. 3 Зашумленный образ букв
Теперь вызовем инструмент NNtool, где с помощью графического интерфейса создадим нейронную сеть. Сделать это можно с помощью соответствующей команды nntool (рис.4).
Рис. 4 Окно менеджера данных нейронной сети
С помощью кнопки Import добавляем необходимые нам переменные (рис.5).
Рис. 5 Окно импорта данных
Переменные P,P1 и noisy10 добавить как input data.
Переменные T,T1 добавить как Target data.
После импорта всех переменных окно должно выглядеть как на рис.6.
Рис. 6 Окно менеджера данных нейронной сети после импорта переменных
Нажав кнопку New, приступим к созданию нейронной сети. В окне параметров нейронной сети введем настройки (рис.7).
Рис. 7 Окно создания нейронной сети
После выбранных параметров создаем сеть, нажав кнопку Create.
После этого сеть должна появиться в окне менеджера данных нейронной сети в разделе networks (рис.8).
Рис 8 Окно менеджера данных нейронной сети после создания нейронной сети
Нажав дважды на созданную сеть, откроем нейронную сеть. Появится окно с вкладками (рис.9), в которых можно посмотреть структуру нейронной сети, обучить ее, провести симуляцию, изменять веса входных данных.
Рис. 9 Структура нейронной сети
Рассмотрим вкладку Train, где будет проводиться обучение нейронной сети.
В начале проведем обучение на идеальных данных.
Введем соответствующие параметры (рис.10).
Рис. 10 Настройка данных, с помощью которых будет происходить обучение
Рис. 11 Параметры обучения нейронной сети
После установки всех параметров запускаем обучение, нажав кнопку Train Network (рис.11). В появившемся окне (рис.12) можем наблюдать процесс обучения нейронной сети.
Рис. 12 Процесс обучения
С помощью кнопки Performance можно просмотреть процесс обучения с помощью графика (рис.13).
Рис. 13 График обучения нейронной сети
Теперь необходимо провести обучение на данных с шумом. Для этого изменим параметры во вкладке train (рис.14, 15).
Рис. 14 Параметры обучения на данных с шумом
Рис. 15 Параметра обучения на данных с шумом
Окно процесса обучения будет выглядеть как рис.16.
Рис. 16 Процесс обучения сети на данных с шумом
График обучения представлен на рис. 17.
Рис. 17 График обучения нейронной сети на данных с шумом
В результате сеть обучена. Теперь необходимо проверить нейронную сеть. Для этого создана переменная noisy10, которая содержит в себе символ «И» с шумом.
Перейдем на вкладку Simulate, в окне созданной сети (рис.18).
Рис. 18 Вкладка Simulate
Выберем в качестве входных данных переменную noisy10, а в качестве выходных данных напишем переменную Ans (рис.19).
Рис. 19 Вкладка Simulate с выбранными параметрами
Для начала процесса симуляции необходимо нажать кнопку Simulate Network.
После этого в окне менеджера данных нейронной сети появится переменная Ans (рис.20).
Рис. 20. Окно менеджера данных нейронной сети после проведенной симуляции
Экспортируем нейронную сеть и переменную Ans. Для этого необходимо нажать кнопку Export и в появившемся окне выбрать необходимые нам переменные и еще раз нажать кнопку Export (рис.21).
Рис. 21 Экспорт переменных
После экспорта в окно команд Matlab вводим следующий фрагмент кода:
%Проверяем результат распознания
Ans = compet(Ans);
answer = find(compet(Ans) == 1)
plotchar(P(:,answer)); % Распознанный символ И
Перед нами появится окно (рис.22), отображающее распознанный символ.
Рис. 22 Распознанный символ И
А в окне команд появится строчка:
answer =7
Означающая, что поступивший символ - это символ под номером 7 в нашем алфавите.
Таким образом, созданная нейронная сеть выполняет поставленную задачу.
Заключение
В данной курсовой работе были решены прямые и обратные задачи о положениях аналитически и с использование многослойной нейронной сети прямой передачи. Нейронная сеть оказалась эффективним инструментом для аппроксимации данных, но в то же время ее довольно сложно обучить и при больших объемах данных, т.к. занимает значительное время как для обучения сети для решения задачи(количество нейронов используемых в слоях нейронной сети растет геометрически с ростом количества входных данных).
Список использованных источников
1. Beale M. H., Hagan M. T., Demuth H. B. Neural Network Toolbox. User's Guide. -- Natick: Math Works, Inc., 2014.
2. Яхъяева Г.Э. Нечеткие множества и нейронные сети/ Учебное пособие. - Москва: Бином, 2006.
3. https://www.mathworks.com/help/deeplearning/examples/character-recognition.html
Приложение А
Листинг программы в Matlab 2017
1. Решение прямой и обратной задач
%% Аналитическое решение
clc,
% Решение обратной задачи
% Исходные данные
L1 = 0.32; L2 = 0.31;
x = [ 0 0.06 0.12 0.18 0.24 0.30 0.36 0.42 0.748 0.54 0.60],
y = [0.60 0.54 0.48 0.42 0.36 030 0.24 0.18 0.12 0.06 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,hold on, %Зависимость 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('Исходные данные','Решение прямой задачи'),
Hold off,
figure(2),
plot(FI1,FI2,'-*',1.6,2),grid on,
% Решение обратной задачи с помощью нейронной сети
clear
l1=0.7;l2=0.62;% Длины звеньев
x=0:0.1:1;% Координаты по оси Х
y=1:-0.1:0;% Координаты по оси У
c=sqrt(x.^2+y.^2)% Расстояние между точками ОВ
gm=acos((l1^2+l2^2-c.^2)/(2*l1*l2)); % Угол при вершине В
f2=pi-gm% Угол f2
al=acos((l1^2-l2^2+c.^2)./(2*l1*c));% Угол АОВ
f=atan(y./x);% Угол ВОх
f1=f+al% Угол f1
xr=l1*cos(f1)+l2*cos(f1-f2)% Расчетные значения координат
yr=l1*sin(f1)+l2*sin(f1-f2)
plot(x,y,xr,yr),grid
pause
plot(f1,f2),grid
pause
% Решение прямой задачи с помощью нейронной сети x
P={[f1;f2]}; %Входы нейронной сети в формате ячеек
T={x}; % Выход нейронной сети в формате ячеек
PR=[min(f1) max(f1); min(f2) max(f2)];% Вектор максимальных и минимальных значений входов
S1=2;S2=1;% Число нейронов в первом и во втором слоях
TF1='tansig';TF2='purelin'; % Функции активации первого и второго слоя
nid=newff(PR,[S1 S2],{TF1 TF2}); % Задание нейронной сети
% gensim(npid)
z=train(nid,P,T);% Обучение нейронной сети
xm=sim(z,P); % Формирование выхода обученной сети
xn=cell2mat(xm)% Преобразование в числовой формат
pause
plot(x,y,xn,y),grid
% gensim(npid)
% Решение прямой задачи с помощью нейронной сети y
P={[f1;f2]}; %Входы нейронной сети в формате ячеек
T={y}; % Выход нейронной сети в формате ячеек
PR=[min(f1) max(f1); min(f2) max(f2)];% Вектор максимальных и минимальных значений входов
S1=2;S2=1;% Число нейронов в первом и во втором слоях
TF1='tansig';TF2='purelin'; % Функции активации первого и второго слоя
nid=newff(PR,[S1 S2],{TF1 TF2}); % Задание нейронной сети
% gensim(npid)
z=train(nid,P,T);% Обучение нейронной сети
xm=sim(z,P); % Формирование выхода обученной сети
yn=cell2mat(xm)% Преобразование в числовой формат
pause
plot(x,y,x,yn),grid
% gensim(npid)
% Решение обратной задачи с помощью нейронной сети f1
P={[x;y]}; %Входы нейронной сети в формате ячеек
T={f1}; % Выходы нейронной сети в формате ячеек
PR=[min(x) max(x); min(y) max(y)];% Вектор максимальных и минимальных значений входов
S1=2;S2=1;% Число нейронов в первом и во втором слоях
TF1='tansig';TF2='purelin'; % Функции активации первого и второго слоя
nid=newff(PR,[S1 S2],{TF1 TF2}); % Задание нейронной сети
% gensim(npid)
z=train(nid,P,T);% Обучение нейронной сети
xm=sim(z,P); % Формирование выхода обученной сети
f1n=cell2mat(xm)% Преобразование в числовой формат
pause
plot(f1n,f2),grid
% gensim(npid)
% Решение обратной задачи с помощью нейронной сети f2
P={[x;y]}; %Входы нейронной сети в формате ячеек
T={f2}; % Выходы нейронной сети в формате ячеек
PR=[min(x) max(x); min(y) max(y)];% Вектор максимальных и минимальных значений входов
S1=2;S2=1;% Число нейронов в первом и во втором слоях
TF1='tansig';TF2='purelin'; % Функции активации первого и второго слоя
nid=newff(PR,[S1 S2],{TF1 TF2}); % Задание нейронной сети
% gensim(npid)
z=train(nid,P,T);% Обучение нейронной сети
xm=sim(z,P); % Формирование выхода обученной сети
f2n=cell2mat(xm)% Преобразование в числовой формат pause
plot(f1,f2n),grid
% gensim(npid)
function [x,fval,exitflag,output,population,score] =
ga2(n,PopulationSize_Data)
% This is an auto generated MATLAB file from Optimization Tool.
% Start with the default options
options = gaoptimset;
% Modify options setting
options = gaoptimset(options,'PopInitRange' , [-2;2]);
options = gaoptimset(options,'PopulationSize', 100);
options = gaoptimset(options,'Generations', 150);
options = gaoptimset(options,'TolFun', 1e-20);
options = gaoptimset(options,'Display', 'off');
n=2;
options = gaoptimset(options,'PlotFcns',
{@gaplotscores,@gaplotscorediversity,@gaplotbestf @gaplotbestindiv @gaplotdistance });
[x,fval,exitflag,output,population,score] = ...
ga(@my_fun2,n,[],[],[],[],[],[],[],options);
2 Оптимизаци яфункции двух пременных
function [x,fval,exitflag,output,population,score] = ga2(n,PopulationSize_Data)
% This is an auto generated MATLAB file from Optimization Tool.
% Start with the default options
options = gaoptimset;
% Modify options setting
options = gaoptimset(options,'PopInitRange' , [-2;2]);
options = gaoptimset(options,'PopulationSize', 100);
options = gaoptimset(options,'Generations', 150);
options = gaoptimset(options,'TolFun', 1e-20);
options = gaoptimset(options,'Display', 'off');
n=2;
options = gaoptimset(options,'PlotFcns',
{@gaplotscores,@gaplotscorediversity,@gaplotbestf @gaplotbestindiv @gaplotdistance }); [x,fval,exitflag,output,population,score] = ...
ga(@my_fun2,n,[],[],[],[],[],[],[],options);
Задание 5 Распознование текста
unction y = Imgread(x)
img=imread(x);
img1=img(:,:,1)';
img2=reshape (img1,[7, 1]);
for i=1:7
if (img2(i,1)==0)
img2(i,1)=1;
end
end
for i=1:35
if (img2(i,1)==255)
img2(i,1)=0;
end
end
y=img2;
end
images1=Imgread('C:\alphabet\H.png');
…
Images7=Imgread('C:\alphabet\T.png');
RA=[images1,images2,images3,images4,images5,images6,images7,];
%Создаем переменные для создания нейронной сети в NNtool
P=double(RA);
T=eye(7);
[R,Q] = size(P);
[S2,Q] = size(T);
%Создаем переменные для обучения на зашумленных данных нейронной сети в
%NNtool
P1=P;
T1=T;
for i=1:100
P1=[P1,P+rand(R,Q)*0.1,P+rand(R,Q)*0.2];
T1=[T1,T,T];
end
[X,T] = prprob;
plotchar(X(:,8))
setdemorandstream(pi);
net1 = feedforwardnet(25);
view(net1)
net1.divideFcn = '';
net1 = train(net1,X,T,nnMATLAB);
numNoise = 30;
Xn = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*0.2,0),1);
Tn = repmat(T,1,numNoise);figure
plotchar(Xn(:,1))
net2 = feedforwardnet(25);
net2 = train(net2,Xn,Tn,nnMATLAB);
noiseLevels = 0:.05:1;
numLevels = length(noiseLevels);
percError1 = zeros(1,numLevels);
percError2 = zeros(1,numLevels);
for i = 1:numLevels
Xtest = min(max(repmat(X,1,numNoise)+randn(35,26*numNoise)*noiseLevels(i),0),1);
Y1 = net1(Xtest);
percError1(i) = sum(sum(abs(Tn-compet(Y1))))/(26*numNoise*2);
Y2 = net2(Xtest);
percError2(i) = sum(sum(abs(Tn-compet(Y2))))/(26*numNoise*2);
end
figure
plot(noiseLevels,percError1*100,'--',noiseLevels,percError2*100);
title('Percentage of Recognition Errors');
xlabel('Noise Level');
ylabel('Errors');
legend('Network 1','Network 2','Location','NorthWest')
Приложение В
Моделирование в Matlab 2017
1. Решение прямой и обратной задач
Рисунок 1- а)зависимость y=f(x); б) зависимость ц2=ш(ц1)
Рисунок 2 модель нейронной сетиNeuralNetwork
Рисунок 3 Среднеквадратичная ошибка нейронной сети для Х
Рисунок 4 Зависимость y=f(x) нейронной сети
Рисунок 5 Среднеквадратичная ошибка нейронной сети для Y
Рисунок 6 Зависимость x=f(y) нейронной сети
Рисунок 9 Среднеквадратичная ошибка нейронной сети для F1
Рисунок 11 Среднеквадратичная ошибка нейронной сети для F2
2 Оптимизация с использованием генетических алгоритмов
Рисунок 12 Минимум функции с одной переменной
Рисунок 14 Минимум функции с двумя переменными
Размещено на Allbest.ru
...Подобные документы
Комплексное исследование истории развития, основных понятий, области применения и особенностей генетических алгоритмов. Анализ преимуществ генетических алгоритмов. Построение генетического алгоритма, позволяющего находить максимум целочисленной функции.
курсовая работа [27,9 K], добавлен 23.07.2011История появления эволюционных алгоритмов. Нейрокомпьютерные исследования в России. Реализация генетических алгоритмов. Расчет эффективности процедур поиска конкурирующей процедуры. Schema и теорема шим. Примеры использования нейросетевых технологий.
курсовая работа [43,0 K], добавлен 20.10.2008Описание генетических алгоритмов. Применение генетического алгоритма для решения задачи коммивояжера. Постановка задачи безусловной оптимизации. Изучение распространения генетических алгоритмов на модель с несколькими взаимодействующими популяциями.
дипломная работа [979,1 K], добавлен 30.05.2015Основные особенности эволюционных алгоритмов. Описание алгоритмов селекции, мутации, скрещивания, применяемых для реализации генетических алгоритмов. Вычисление функции приспособленности. Программная реализация. Тестирование и руководство пользователя.
курсовая работа [1,3 M], добавлен 11.03.2014Трудности использования эволюционных алгоритмов. Построение вычислительных систем, основанных на принципах естественного отбора. Недостатки генетических алгоритмов. Примеры эволюционных алгоритмов. Направления и разделы эволюционного моделирования.
реферат [187,4 K], добавлен 21.01.2014Основные генетические операторы. Схема функционирования генетического алгоритма. Задачи, решаемые с помощью генетических алгоритмов. Математическая постановка задачи оптимизации. Решение Диофантова уравнения. Программная реализация. Создание пособия.
курсовая работа [391,4 K], добавлен 20.02.2008Первые работы по симуляции эволюции. Основные понятия генетических алгоритмов. Постановка задачи и функция приспособленности. Инициализация, формирование исходной популяции. Выбор исходной популяции для генетического алгоритма, решение задач оптимизации.
курсовая работа [714,1 K], добавлен 31.03.2015Использование вычислительных возможностей программ общего назначения при решении базовых геодезических задач. Решение прямой угловой засечки по формулам Юнга и обратной геодезической задачи. Решение с помощью системы для математических расчетов MATLAB.
курсовая работа [11,4 M], добавлен 31.03.2015Методика решения некоторых геодезических задач с помощью программ MS Excel, MathCad, MatLab и Visual Basic. Расчет неприступного расстояния. Решение прямой угловой засечки по формулам Юнга и Гаусса. Решение обратной засечки по формулам Пранис-Праневича.
курсовая работа [782,2 K], добавлен 03.11.2014Характеристика методов нечеткого моделирования и изучение системы кластеризации в пакетах прикладных программ. Разработка и реализация алгоритма для оптимизации базы правил нечеткого классификатора с помощью генетического алгоритма аппроксимации функции.
дипломная работа [1,9 M], добавлен 21.06.2014Понятие и суть нечеткой логики и генетических алгоритмов. Характеристика программных пакетов для работы с системами искусственного интеллекта в среде Matlab R2009b. Реализация аппроксимации функции с применением аппарата нечеткого логического вывода.
курсовая работа [2,3 M], добавлен 23.06.2012Разработка программ с помощью Turbo Pascal для решения задач, входящих в камеральные работы маркшейдера: решение обратной геодезической задачи и системы линейных уравнений методом Гаусса, определение координат прямой угловой засечки и теодолитного хода.
курсовая работа [1,5 M], добавлен 05.03.2013Изучение аналитических и численных методов поиска одномерного и многомерного безусловного экстремума. Решение поставленной задачи с помощью Mathcad и Excel. Реализация стандартных алгоритмов безусловной оптимизации средствами языка программирования С++.
курсовая работа [488,5 K], добавлен 21.10.2012Критерии и основные стратегии планирования процессора. Разработка моделей алгоритмов SPT (Shortest-processing-task-first) и RR (Round-Robin). Сравнительный анализ выбранных алгоритмов при различных условиях и различном количестве обрабатываемых данных.
курсовая работа [179,3 K], добавлен 21.06.2013Обзор рекурсивных алгоритмов с позиции теории алгоритмов, теории сложности, с точки зрения практического программирования. Имитация работы цикла с помощью рекурсии. Способы изображения древовидных структур. Синтаксический анализ арифметических выражений.
курсовая работа [432,2 K], добавлен 16.01.2013Исследование особенностей разработки линейных алгоритмов и их реализации в среде Delphi. Составление тестов для проверки программы. Характеристика основных элементов интерфейса, компонентов, значения их свойств. Построение графической схемы алгоритма.
лабораторная работа [316,6 K], добавлен 08.11.2012Сущность и экономическое обоснование, методы и подходы к прогнозированию валютного курса. Описание технологии интеллектуальных вычислений. Применение генетических алгоритмов для настройки архитектуры нейронных сетей. Основные способы улучшения модели.
курсовая работа [1,3 M], добавлен 26.03.2016Основные этапы и принципы решения задач на ЭВМ, порядок постановки задачи и построения алгоритма. Сущность теории алгоритмов, ее основные элементы и взаимосвязь, свойства, методика представления в виде схемы, ее обозначения и использующиеся символы.
лекция [136,3 K], добавлен 11.03.2010Создание схем алгоритмов и составление программы на языке Pascal для вычисления значений заданных функций. Сущность и порядок нахождения значения определенного интеграла. Анализ работы подпрограмм. Разработка тестов для проверки правильности алгоритмов.
контрольная работа [831,0 K], добавлен 24.11.2013Положения алгоритмов сжатия изображений. Классы приложений и изображений, критерии сравнения алгоритмов. Проблемы алгоритмов архивации с потерями. Конвейер операций, используемый в алгоритме JPEG. Характеристика фрактального и рекурсивного алгоритмов.
реферат [242,9 K], добавлен 24.04.2015