Оптимизация в САПР

Автор работы: Пользователь скрыл имя, 16 Апреля 2013 в 13:05, курсовая работа

Описание работы

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

Содержание работы

ЗАДАНИЕ НА ПРОЕКТИРОВАНИЕ 4
ВВЕДЕНИЕ 5
МЕТОДЫ РЕШЕНИЯ ОПТИМИЗАЦИОННОЙ ЗАДАЧИ 6
Методы одномерной минимизации 6
Метод Свенна 6
Метод золотого сечения 6
Алгоритм ЗС-1 7
Алгоритм ЗС-2 8
Метод Фибоначчи 8
Алгоритм Фибоначчи-1 8
Алгоритм Фибоначчи-2 9
Метод средней точки (метод Больцано) 9
Метод квадратичной интерполяции – экстраполяции 10
Метод Пауэлла 11
Метод Давидона 11
Методы многомерной минимизации 13
Метод Коши 13
Метод Циклического покоординатного спуска 13
Метод параллельных касательных 14
Метод Гаусса-Зейделя 15
Метод комплексов Бокса 15
Метод Хука-Дживса (конфигураций) 17
Метод Ньютона 19
Метод Зангвилла 19
Флетчера-Ривса 20
Метод Пауэлла 21
БЛОК-СХЕМЫ 23
Метод Свенна 23
Метод ЗС-1 24
Метод ЗС-2 25
Метод Фибоначчи-1 26
Метод Фибоначчи-2 27
Метод Больцано 28
Метод квадратичной интерполяции – экстраполяции 29
Метод Пауэлла 30
Метод Давидона 31
РЕЗУЛЬТАТЫ ТЕСТИРОВАНИЯ ПРОГРАММЫ 35
Результат тестирования методов для одномерной функции 35
Результат тестирования методов для двухмерной функции 35
Результат тестирования методов для трёхмерной функции 36
Результат тестирования методов для четырёхмерной функции 36
Результат тестирования метода комплексов Бокса 37
Результат тестирования парсера 37
ИНСТРУКЦИЯ ДЛЯ ПОЛЬЗОВАТЕЛЯ 38
ЗАКЛЮЧЕНИЕ 39
ПРИЛОЖЕНИЕ – ЛИСТИНГ ПРОГРАММЫ 40

Файлы: 1 файл

Курсовик_Мальгин_1.doc

— 696.50 Кб (Скачать файл)

Министерство образования  Российской Федерации

Санкт-Петербургский  Государственный 
Электротехнический Университет “ЛЭТИ” 
имени В.И. Ульянова (Ленина)

197376, Санкт-Петербург,  ул. Проф. Попова, 5


 

Факультет компьютерных технологий и информатики

Кафедра вычислительной техники

                                                                «ЗАЧТЕНО»

                                                                  _________Г.Д. Дмитревич

                                                                  “__”___________2005 г.

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

По  курсу: “Оптимизация в САПР”

Студент группы 2311          _________ С.А. Мальгин

Санкт-Петербург 2005

 

 

Оглавление

 

 

Задание на проектирование

 

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

  1. Программа должна позволять:
  • проводить оптимизации целевых функций с числом переменных n≤5.
  • допускать численное дифференцирование минимизируемых функций.
  • выполнять решение в автоматическом режиме и в поитерационном режиме с выдачей всей информации, необходимой для контроля соответствия работы программы по заданному методу.
  • задавать с клавиатуры критерий останова (норма градиента и число итераций) и продолжать решение после внесения дополнительных уточнений в текущую точку и критерий останова.
  • вводить с клавиатуры минимизируемые функции многих переменных, содержащих скобки, степени и основные математические функции (Eps, Ln, Sin, Cos и т.д.).
  1. Программа должна быть дружественной пользователю:
  • содержать необходимые заставки и сообщения, характеризующие программу, используемый метод, характер выводимой информации, допущенную ошибку при вводе данных и т.д.
  • содержать блокировку ошибочных действий при вводе данных и обеспечивать простоту исправления ошибки.
  • желательно, чтобы при демонстрационном режиме была возможность выбора из нескольких (трех-пяти) тестовых функций и запуск на поиск решения без ввода вида функции  с клавиатуры
  1. Программа должна быть хорошо структурирована:
  • текст программы должен быть оформлен в соответствии с правилами модульного программирования.
  • структуры данных и процедуры, связанные с транслятором строки и с минимизацией функций, должны быть оформлены в два модуля.
  • все функции должны сопровождаться детальными комментариями и спецификациями, показывающими назначение функций, массивов, переменных и смысл основных операторов.

 

Введение

 

Одним из важнейших направлений  оптимизации является задача поиска оптимального решения различных функций многих переменных. Поэтому целью курсового проекта является углубленное изучение методов оптимизации в САПР. Наибольший акцент делается на методы безусловной оптимизации. Курсовой проект предполагает разработку программы автоматизированного поиска оптимального решения с использованием процедур, написанных и отлаженных самостоятельно, а также процедур, разработанных ранее при выполнении цикла лабораторных работ в курсах «Методы оптимизации» и «Теория принятия решений». Эти курсы включают в себя следующие основные направления:

  1. Методы одномерного поиска минимума унимодальных функций.
  2. Методы полиномиальной интерполяции для поиска минимума целевых функций.
  3. Линейный поиск по направлению.
  4. Градиентные методы.
  5. Методы безусловной оптимизации первого порядка.
  6. Методы безусловной оптимизации нулевого порядка.

Для реализации курсового  проекта наиболее подходящим и рекомендуемым является алгоритмический язык Microsoft Visual С++ 6.0, т.к. он обладает полным набором средств для создания и управления различными прикладными задачами, в том числе, и задачей поиска минимума функции. При разработке рекомендуется использовались технологии объектно-ориентированного программирования. 

МетодЫ решения оптимизационной  задачи

 

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

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

 

Методы одномерной минимизации

Метод Свенна

 

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

Начальный этап.

  1. задать произвольную начальную точку x0ÎRn
  2. выбрать начальный шаг h=Dx=0,01

Основной этап

Шаг 1. Установить направление  убывания функции. Для этого взять x2=x1+h.  Если f(x1) <f(x2), то поменять направление движения: h1=-h1 и взять x2=x1+h1.

Шаг 2. Вычислить fk в точках xk+1=xk+hk, где k=2,3,4,…,m-1; hk=2hk-1 – движение с удвоением шага, до тех пор, пока не придём в точку xm такую, что f(xm)<f(xm-1).

Шаг 3. Установить начальный  интервал локализации минимума

a1=xm-2

b1=xm

Метод золотого сечения

 

Метод золотого сечения – это процедура одномерного поиска минимума на интервале [a1,b1] или [0,1]. На каждом шаге пробная точка lk или mk внутри текущего интервала локализации [ak,bk] делит его в отношении, постоянном для всех интервалов - золотое сечение. Можно показать, что , откуда , следовательно , значит . Одним из корней этого уравнения является t1=0,618 – первое золотое число. Отметим, что t12=0,6182=0,382 – второе золотое число. Следует отметить, что в методе золотого сечения имеет место правило симметрии (эквидистантности) точек относительно концов интервала, а также правило одного вычисления, т.е. на каждой итерации требуется одно и только одно новое вычисление (кроме первой итерации), т.к. точки на соседних итерациях совпадают.

 

Алгоритм ЗС-1

 

Начальный этап

  1. Выбрать погрешность расчёта e=10-3¸10-7. Получить начальный интервал методом Свенна.
  2. Вычислить стартовые точки l1=a1+0,382L1, m1=a1+0,618L1 (следует отметить, что золотые числа следует вычислять точно)
  3. Принять k=1 – счётчик числа итераций

Основной этап

Шаг 1.Сократить ТИЛ рассмотрением 2-х ситуаций:

      1. Если f(l)<f(m),то

ak+1=ak

bk+1=mk

mk+1=lk

lk=ak+1+0,382Lk+1

      иначе

ak+1=lk

bk+1=bk

lk+1=mk

mk=ak+1+0,618Lk+1

      1. Положить k=k+1, Lk+1=|bk+1-ak+1|

Шаг 2. Проверить критерий окончания поиска: если |ak+1-bk+1|£e - остановиться – минимум найден. Точнее фиксируем аппроксимирующий минимум как . Иначе вернуться на шаг 1.

 

Алгоритм ЗС-2

 

Начальный этап

  1. Выбрать погрешность расчёта e=10-3¸10-7. Получить начальный интервал методом Свенна.
  2. Вычислить стартовые точки l1=a1+0,382L1, m1=a1+0,618L1 (следует отметить, что золотые числа следует вычислять точно)
  3. Принять k=1 – счётчик числа итераций

Основной этап

Шаг 1. Взять очередную  пробную точку x2=ak+bk-x1, симметричную исходной и сократить ТИЛ рассмотрением 4-х возможных ситуаций:

    1. Если (x1<x2) и (f(x1)<f(x2)) то b=x2;
    2. Если (x1<x2) и (f(x1)>=f(x2)) то a=x1;
    3. Если (x1>x2) и (f(x1)<f(x2)) a=x2;
    4. Если (x1>x2) и (f(x1)>=f(x2)) b=x1;

Увеличить счётчик числа  итераций k=k+1

Шаг 2. Проверить критерий окончания поиска: если |ak+1-bk+1|£e - остановиться – минимум найден. Точнее фиксируем аппроксимирующий минимум как . Иначе вернуться на шаг 1.

 

Метод Фибоначчи

 

Метод Фибоначчи является процедурой линейного поиска минимума унимодальной функции f(x) на замкнутом  интервале [a, b], отличающейся от процедуры  золотого сечения тем, что очередная  пробная точка делит интервал локализации в отношении двух последовательных чисел Фибоначчи. Последовательность чисел Фибоначчи задаётся условиями F0 = F1 = 1, Fk+1 = Fk + Fk-1, k = 1,2,... Начальными членами последовательности будут 1, 1, 2, 3, 5, 8, 13,... Стратегия поиска Фибоначчи требует заранее указать n - число вычислений минимизируемой функции и e - константу различимости двух значений f(x). Рассмотрим один из возможных вариантов метода.

 

Алгоритм Фибоначчи-1

 

Начальный этап

(1) Задать константу e, начальный интервал [a1, b1], длину конечного интервала Ln и определить число n так, чтобы выполнялось условие Fn > (b1 - a1)/Ln.

(2) Взять две пробные точки l1 = a1 + (Fn-2/Fn)(b1 - a1) и m1 = a1 + (Fn-1/Fn)(b1-a1). Положить k = 1.

Основной этап

Шаг 1. Сократить текущий интервал локализации:

(1) Если f(lk) < f(mk), то положить ak+1 = ak, bk+1 = mk,mk+1 =lk и вычислить новую точку lk+1 = ak+1 + (Fn-k-2/Fn-k)Lk+1, где Lk+1 = bk+1 - ak+1; перейти на шаг 2.

(2) Если f(lk)>> f(mk),то положить ak+1 =lk, bk+1 = bk, lk+1 = mk и вычислить mk+1 = ak+1 + (Fn-k-1/Fn-k) Lk+1.

Шаг 2. Проверить критерий окончания поиска:

(1) Заменить k на k+1. (2) Если k = n - 1, перейти на шаг 3, иначе  - на шаг 1.

Шаг 3. Найти аппроксимирующий минимум х(*):

(1) Положить mk = lk + e.

(2) Если f(lk) > f(mk), то x(*) = (lk + bk)/2. В противном случае - x(*) = (ak + mk)/2.

 

Алгоритм Фибоначчи-2

 

Начальный этап

(1) Задать константу e, начальный интервал [a1, b1], длину конечного интервала Ln и определить число n так, чтобы выполнялось условие Fn > (b1 - a1)/Ln.

(2) Выбрать одну пробную  точку . Положить

k = 1.

Основной этап

Шаг 1. Проверить критерий окончания поиска: если k=n, то остановиться и положить x*=x2.

Шаг 2. Сократить текущий  интервал локализации рассмотрением 4-х ситуаций, аналогично методу золотого сечения-2.

 

Метод средней точки (метод  Больцано)

 

Данный метод является вариантом метода деления интервала  пополам. Последовательные сокращения интервала неопределенности производятся на основе оценки производной минимизируемой функции в центре текущего интервала.

Начальный этап. Для запуска метода необходимо:

(1) задать [a1,b1]- начальный интервал локализации минимума, на границах которого знаки производных различны, т.е. f'¢(a1)f'¢(b1)<0; e - малое положительное число;

(2) положить к=1 и перейти  к основному этапу.

Основной этап

Шаг 1. Взять пробную  точку хk в центре текущего интервала и проверить критерий окончания поиска: (1) xk = (ak + bk)/2; (2) если ½f'¢(xk)½ ≤ e и Lk= ½bk - ak½≤ e, то остановиться (хk = х* -аппроксимирующий минимум).

Шаг 2. Сократить текущий  интервал:

(1) Если f ¢(xk) > 0, то положить ak+1 = ak и bk+1 =xk, в противном случае - ak+1 =xk, bk+1 =bk;

Информация о работе Оптимизация в САПР