Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
9
Добавлен:
01.05.2014
Размер:
172.03 Кб
Скачать

Санкт-Петербургский Государственный Электротехнический Университет «ЛЭТИ»

Кафедра САПР

ОТЧЕТ

по лабораторной работе №11

«Исследование методов нелинейного программирования»

вариант № 8

факультет КТИ

группа 3371

студент Кондратьев В.

преподаватель: Муранов И.

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

Содержание:

1) Цель работы ……………………………………………………….3

2) Описание метода оптимизации…………………………………...3

3) Спецификация программы………………………………………..4

4) Спецификация функций…………………………………………..5

5) Результаты тестирования программы……………………………6

6) Ответы на контрольные вопросы………………………………....6

7)Текст программы…………………………………………………...8

8)Укрупненная блок схема программы……………………………..13

7) Выводы……………………………………………………………..15

Цель работы и требования задания

Цель работы – изучение методов нелинейного программирования и разработка программы минимизации функций модифицированным методом Хука–Дживса

(1; 0)

Описание метода поиска

Метод содержит две поочередно выполняемые операции: 1) Исследующий поиск2)Ускоряющий поиск. Стратегия ИП поиска заключается в исследовании окрестности произвольно выбранной точки с целью отыскания новой точки x2 т.ч.f(x2)<f(x1).

Схема алгоритма:

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

Выбрать начальную точку х1, b=(2-10),e=10-3-10-7

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

Шаг1

Выполнить ИП точки спуска х2, лучшей чем х1

Шаг 2

Если ИП удачен, то перейти на шаг 3, иначе если h>eто уменьшить шаг и вернуться на шаг 1 иначеstop, минимум найден и равен х2.

Шаг 3

Выполнить ускоряющий поиск в пробную точку х3=2*х2-х1

Обозначить х1=х2

В окрестности х3 с помощью ИП найти новую точку спуска х4, лучшую, чем х1

Шаг 4

Если ИП удачен, то положить х2=х4 и вернуться на шаг3 иначе перейти на шаг 1.

Для нахождения условного минимума необходимо сделать следующие модификации:

  1. Если пробная точка в ИП не принадлежит заданной области, то отбросить ее и выполнить шаг в другую сторону

  2. В УП новую точку берем следующим образом:

x3=x2+a(x2-x1) Если точка не принадлежит заданной области, то уменьшаем а в два раза, и так до тех пор, пока не загоним точку в область.

Спецификация программы.

Программа минимизирует заданную функцию модифицированным методом Хука-Дживса

Глобальные переменные:

classvec //Класс вектор

{

public:

vec(inti1 = 5); //Конструктор

~vec(); //Деструктор

int Vn; //Размерность вектора

double *x;

vec operator +(const vec &x); //Сложение векторов

vec operator -(const vec &x); //Вычитание векторов

void operator =(const vec &x); //Операция присваивания

vecoperator*(doublea); //Умножение вектора на скаляр

vecoperator/(doublea); //Деление вектора на скаляр

vecoperator/(vecx); //Поэлементное деление векторов

doubleoperator*(constvec&x); //Скалярное произведение векторов

};

class matrix //Класс матриц

{

public:

int Mn;//Размерность матрицы

vec *M;

matrix(int i1 = 5);

~matrix();

vecoperator*(constvec&x); //Произведение матрицы и вектора

matrix operator *(double a); //Умножение матрицы на скаляр

matrix operator +(const matrix &A); //Сложение матриц

matrix operator -(const matrix &A); //Вычитание матриц

matrixoperator/(doublea); //Поэлементное деление матрицы на число

matrixTr(void); //Транспонирование матрицы

};

intnum; //Число переменных в функции

intfun; //Номер минимизируемой функции

int k; //Счетчик числа итераций

double al[3]={0,0,0}; //Массив для хранения коэффициента «а»: x2=x1+a*p;

Соседние файлы в папке Лабораторная работа №111