Курсовая работа: Методи розв’язування одновимірних та багатовимірних нелінійних оптимізаційних задач та задач лінійного цілочислового програмування
Название: Методи розв’язування одновимірних та багатовимірних нелінійних оптимізаційних задач та задач лінійного цілочислового програмування Раздел: Рефераты по математике Тип: курсовая работа | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Міністерство освіти і науки України Полтавський національний технічний університетімені Юрія Кондратюка Факультет інформаційно-телекомунікаційних технологій та систем Кафедра прикладної математики, інформатики і математичного моделювання КУРСОВА РОБОТА з дисципліни «Методи оптимізації і дослідження операцій» на тему:«Методи розв’язування одновимірних та багатовимірнихнелінійних оптимізаційних задач та задач лінійногоцілочислового програмування» 301-ЕІ. 20 06165КР Керівник роботи кандидат фіз.-мат. НаукРадченко Г.О. Розробила студентка гр. 301-ЕІКлюєва А.Ю. Полтава 2009 Зміст1. Методи розв’язування одновимірних оптимізаційних задач 2. Визначення найменшого значення функції на заданому відрізку за допомогою методів одновимірної оптимізації 3. Розв’язання задачі мінімізації за допомогою методу Ньютона і методу найшвидшого спуску 4. Розв’язання задачі умовної оптимізації за допомогою методу Франка-Вулфа і методу штрафних функції 5. Розв’язання задачі цілочислового програмування 6. Вихідний код програм Список використаної літератури 1. Методи розв’язування одновимірних оптимізаційних задач Розглянемо детально методи розв’язування одновимірних задач, а саме: метод дихотомії, метод золотого перерізу і метод Фібоніччі. Одновимірна оптимізація полягає в знаходженні точки Функція Відповідно функція Класичний підхід до задачі знаходження екстремумів функції полягає в пошуку умов, яким вони повинні задовольняти. Необхідною умовою
екстремуму в точці З метою отримання достатніх умов
вимагається обчислення значень других похідних в точках, що задовольняють рівняння Дамо визначення унімодальної функції при пошуку мінімуму. Неперервна функція · точка · для довільних двох точок відрізка х1
і х2
, взятих по одну сторону від точки мінімуму, точці х1
більш близькій до точки мінімуму відповідає менше значення функції, тобто при Достатня умова унімодальності функції Якщо функція Відмітимо, що умова Метод половинного ділення
, який також називається методом дихотомії
, являється процедурою послідовного пошуку мінімуму фунуції. Нехай визначено відрізок
Константа Потім обчислюють значення функції в цих точкахy 1=f (x 1) і y 2=f (x 2) і в залежності від їх співвідношення нові межі відрізка унімодальності [a 1, b 1] будуть наступні: • y 1 < y 2, a 1=a 0 іb 1=x 2 ; • y 1 > y 2, a 1=x 1 іb 1=b 0 ; • y 1 = y 2, a 1=x 1 іb 1= x 2 . В цьому звуженому проміжку [a
1, b
1] знову розраховуються дві точки х1(1)
іх2(1)
, симетричні відносно його середини і значення функції в цих точках. Процедура буде продовжуватись до тих пір, поки не буде виконуватись умова Δk
= bk
-ak
≤ ε
,
де ε
– точність пошуку, і тоді в якості точки локального мінімуму можна наближено прийняти середину відрізку Назва методу половинного ділення мотивована тим, що якщо величина ε достатньо мала, то довжина відрізка унімодальності (b – a ) зменшується майже вдвічі. Наступним методом знаходження екстремуму для задач одновимірної оптимізації є метод золотого перерізу . Термін “золотий переріз” ввів Леорандо да Вінчі. Точка х1
являється золотим перерізом відрізка Відмітимо властивість золотого перерізу: точка х1
одночасно являється золотим перерізом відрізка Суть методу золотого перерізу заклечається в наступному. Спочатку на вихідному відрізку
Потім обчислюють значення функції в точках х1
і х2
, тобто 1. 2. І в першому і в другому випадках розраховується лише одна нова точка (друга відома). В новій точці обчислюється значення функції і знову відбувається порівняння в двох точках, і в залежності від цього обирається новий відрізок. Процедура виконується до тих пір, доки не буде виконуватись умова Розглянемо також метод Фібоначчі для розв’язуванняодновимірних задач . Цей метод названий так зважаючи на появу при пошуку проміжків унімрдальності чисел Фібоначчі і використовується, якщо кількість ітерації обмежена . Суть методу в тому, що на кожному кроці точка наступного обчислення обирається симетрично відносно середини відрізка локалізації до точки, що лежить всередині цього відрізку, уже проведеного обчислення. Тобто в процесі пошуку інтервалу (x1; x3) з точкою х2, вже лежачою в цьому інтервалі, наступна точка х4 завжди вибирається так, що х3–х4 = х2–х1або х4-х1 = х3-x2, тобто x4=х1-х2+х3. Алгоритм методу Фібоначчі поляга в наступному: 1)
задаються початкові границі відрізку 2) розраховуються початкові точки ділення:
3) покладають · якщо · інакше 4) якщо n
=1,
то Відмітимо, що на кожному кроці методу Фібоначчі точка, що лежить середині відрізку локалізації, ділить його у відношенні двох послідовних чисел Фібоначчі. 2. Визначення найменшого значення функції на заданому відрізку за допомогою методів одновимірної оптимізації Визначимо найменше значення функції · метод дихотомії: Розіб’ємо відрізок Обчислюємо значення функції Оскільки В нашому випадку Оскільки
Перевіряємо умову зупинки:
· метод золотого перерізу На першій ітерації відрізок Обчислюємо значення функції в цих точках: Той із кінців відрізка, до якого серед знову поставлених точок ближче опинилась та, значення функції в якій максимальне, відкидаємо. Тобто, оскільки Так як і в методі дихотомії процедура буде продовжуватись до тих пір, поки не буде виконуватись умова
Перевіряємо умову зупинки: Знову перевіряємо умову зупинки: Перевіряємо умову зупинки: Перевіряємо умову зупинки: Перевіряємо умову зупинки:
Метод дихотомії побудований таким чином, що кожний наступний інтервал невизначеності менше попереднього. Як бачимо, в порівнянні з методом золотого перерізу цей метод сходиться значно швидше (тобто через меншу кількість кроків отримуємо інтервал невизначеності заданої довжини, що містить · метод Фібоначчі Спочатку згенеруємо послідовність чисел Фібоначчі: 1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, 233, 377, 610, 987, 1597, 2584, 4181, … . Початкові обрахунки проводяться в точках:
Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки Оскільки 3. Розв’язання задачі мінімізації за допомогою методу Ньютона і методу найшвидшого спуску Розв’яжемо задачу мінімізації для функції Перш ніж розв’язувати дану задачу, з’ясуємо чи має вона точку локального мінімуму. Для цього побудуємо матрицю Гессе. Знайдемо частинні похідні першого і другого порядку від функції Отже матриця Гессе матиме вигляд:
Так як цільова функція є опуклою, тобто це задача опуклого програмування, а функція Отже можемо застосувати метод Ньютона. Послідовність точок, яка прямує до точки мінімуму функції
Обиремо в допустимій області задачі довільну точку – початкове наближення. Нехай це буде точка Знайдемо градієнт цільової функції: Знайдемо наступне наближення до оптимального розв’язку вихідної задачі: Тепер розв’яжемо задачу мінімізації для функції За даним методом будується послідовність точок Широке застосування цього методу обумовлено тим, що в напряму антиградієнту — Алгоритм методу найшвидшого спуску: 1. Обираємо довільну початкову точку 2. Обчислюємо градієнт цільової функції 3. Шукаємо наступне наближення за формулою: 4. Перевіряємо умову зупинки, а саме: 5. Покладаємо, що Тепер перейдемо безпосередньо до нашого прикладу. Оберемо спочатку точність обчислень З методу Ньютона маємо, що градієнт цільової функції в точці
Знайдемо Отже можемо тепер знайти координати точки Перевіряємо умову зупинки:
Отже можемо тепер знайти координати точки Перевіряємо умову зупинки:
Отже можемо тепер знайти координати точки Обчислимо значення цільової функції в цій точці:
Отже можемо тепер знайти координати точки Обчислимо значення цільової функції в цій точці:
Як бачимо, розв’язки задачі, знайдені обома методами майже однакові, але при цьому метод Ньютона дав результат вже на першому кроці ( на відміну від методу найшвидшого спуску, де довелося робити 4 ітерації). Це пов’язано з тим, що цільова функція є квадратичною, а отже напрям спуску Розв’язання задачі умовної оптимізації за допомогою методу Франка-Вулфа і методу штрафних функції 4. Розв’яжемо задачу умовної оптимізації a. методом Франка-Вулфа Функція Отже матриця Гессе матиме вигляд: Головні мінори : Система обмежень задачі включає тільки лінійні нерівності, які утворюють опуклу множину, отже дана задача є задачею опуклого програмування. Задачу такого типу можна розв’язувати методом Франка-Вулфа. Цей метод відноситься до групи градієнтних методів. Розглянемо задачу: Алгоритм методу Франка-Вулфа: 1. Спочатку в допустимій області задачі обирають довільну точку 2. Знаходять в цій точці градієнт цільової функції 3. Будують функцію Нехай 4. Шукаємо наступне наближення за формулою: 5. Перевіряють критерії зупинки: 6. Покладають, що Тепер перейдемо безпосередньо до нашої задачі. За початкове наближення до оптимального плану задачі обираємо точку Розв’яжемо за допомогою симплекс методу задачу: оптимізаційний одновимірний мінімізація дихотомія ньютон
Позначимо через Знайдемо похідну цієї функції по
Отже знаходимо нове наближення оптимального плану вихідної задачі аналогічним чином. Покладаємо, що
Знаходимо за допомогою симплекс-методу максимум функції
Позначимо через
b. метод штрафних функцій Цей метод відноситься до групи непрямих методів розв’язання задач нелінійного програмування виду: Він зводить задачу з обмеженнями в послідовність задач безумовної оптимізації деяких допоміжних функції. Останні отримуються шляхом модифікації цільової функції за допомогою функій-обмежень таким чином, щоб обмеження в явному вигляді в задачі оптимізації не фігурували. Це забезпечує можливість застосування методів безумовної оптимізації. В загальному випадку допоміжна функція має вигляд: Далі розв’язують задачу мінімізації для функції 1. Обирається точність обчислень, а в якості початкової точки 2. Знаходять 3. Перевіряють чи виконується умова 4. Покладають, що Перейдемо тепер безпосередньо до нашої задачі. Так як ми розглянули алгоритм методу штрафних функцій для випадку пошуку мінімуму функції, то перейдемо від задачі максимізації до задачі мінімізації: Запишемо штрафну функцію: За точність обчислень оберемо
Тобто Точка Обчислимо значення штрафної функції в цій точці: Точка Обчислимо значення штрафної функції в цій точці: Точка Обчислимо значення штрафної функції в цій точці: Тепер перевіримо критерій зупинки:
Точка Обчислимо значення штрафної функції в цій точці: Тепер перевіримо критерій зупинки:
Точка Обчислимо значення штрафної функції в цій точці: Тепер перевіримо критерій зупинки:
Точка Обчислимо значення штрафної функції в цій точці: Тепер перевіримо критерій зупинки:
Точка З другого обмеження задачі маємо: Отже в якості параметру Точка І так далі продовжується процес пошуку нового наближення до розв’язку задачі. Як бачимо, метод штрафних функцій сходиться значно повільніше, ніж метод Франка-Вулфа. Це може бути пов’язано з тим, що початкове наближення знаходиться далеко від мінімуму функції, або ж необхідно обрати більший крок. 5. Розв’язання задачі цілочислового програмування Розв’яжемо задачу цілочислового програмування а) графічно: Оскільки число невідомих задачі дорівнює двом, рішення можна знайти, використовуючи геометричну інтерпретацію заадчі. Для цього, насамперед, побудуємо багатокутник рішення задачі, що складає у визначенні максимальне значення лінійної функції (1) при виконанні умов (2) і (3) (мал. 1). Координати всіх точок побудованого багатокутника рішення ОАВС задовольняють систему лінійних нерівностей 2-3. Разом з тим умові (4), тобто умові цілочисельності змінних, задовольняють координати лише 20 точок, відзначених на мал. 1. Щоб знайти точку, координати якої визначають рішення вихідної задачі, замінимо багатокутник ОАВС багатокутником, щомістить усі припустимі точки з цілочисловими координатами і таким, що координати кожної з вершин є цілими числами. Виходить, якщо знайти точку максимуму функції (1) на отриманому багатокутнику, то координати цієї точки і визначать оптимальний план задачі. Для цього побудуємо вектор У даному випадку шуканою є точка Е(2;3),
у якій цільова функція приймає максимальне значення б) методом Гоморі: Для рішення задачі цілочислового програмування методом Гоморі спочатку визначимо симплекс-методом оптимальний план задачі 1 —3 без умови цілочисельностісті змінних:
Тобто оптимальний план буде мати вигляд: Умову 5 записуємо в канонічній формі:
З останньої симплекс-таблиці видно, що вихідна задача цілочислового програмування має оптимальний план Х* =
(2; 3). При цьому плані значення цільової функції дорівнює: в ) методом Ленг і Дойг Як і у випадку знаходження розв’язку задачі цілочислового програмування за допомогою методу Гоморі, спочатку визначаємо симплекс-методом оптимальний план задачі (1) —(3) без умови цілочисельності змінних. З попереднього пункту маємо оптимальне для задачі лінійного програмування (1-3): Оскільки оптимальне рішення задачі лінійного програмування 1-3 не задовольняє умові цілочисельності, метод Ленг і Дойг заміняє простір рішень задачі лінійного програмування так, що в кінцевому результаті отримуємо рішення задачі цілочислового лінійного програмування. Для цього спочатку обираємо змінну, значення якої не є цілочисловим, тобто а) задача 1: б) задача 2: Нові обмеження виключають одна одну, тому задачу 1 і задачу 2 необхідно розглядати як незалежні задачі лінійного програмування. Оптимальне рішення задачі цілочислового програмування знаходиться або в просторі допустимих рішень задачі 1, або задачі 2. Отже обидві звдачі необхідно розв’язати. Спочатку розв’яжемо задачу 1. Для цього спочатку з останньої симплекс-таблиці задачі 1-3 змінну Тепер нове додаткове обмеження Отже за допомогою двоїстого симплекс-методу можемо розв’язати задачу 1:
Оптимальним розв’язком задачі 1 буде В цій ситуації ми не можемо оцінити якість рішення, отриманого при розгляді задачі 1, оскільки розв’язок задачі 2 може привести до кращого цілочисельного розв’язку(з більшим значенням цільової функції). Поки що ми можемо лише сказати, що значення При значенні нижньої границі
Оскільки для b=-1/3 в рядку, що йому відповідає немає від’ємних чисел, то задача 2 розв’язку не має. Отже оптимальним рішенням задачі лінійного цілочислового програмування являється нижня границя, а саме Як бачимо, розв’язки, отримані трьома способами однакові. 6. Вихідний код програми Нижче приведемо код програми для знаходження мінімуму фіункції за допомогою методу золотого перерізу і методу Фібоначчі, реалізований в С++. Результат виконання програми виводить в окремий текстовий документ Solution.txt. · Метод золотого перерізу // zoloto.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <cmath> #include <fstream> using namespace std; double g[5]={0}; double a,b; double E=0; void Inputkoef() { for (int i=0;i<5;i++) { cout<<"Enter a value a["<<i+1<<"] : "; cin>>g[i]; } } void Inputotrez() { cout<<"Enter the lower limit segment a="; cin>>a; cout<<"Enter the upper limit of the interval b="; cin>>b; cout<<"enter the calculation accuracy E="; cin>>E; } double f(double x) { return (g[0]*pow(x,4)+g[1]*pow(x,3)+g[2]*pow(x,2)+g[3]*x+g[4]); } double f(double); ofstream Out; int main(int argc, char* argv[]) { cout<<"function has the form: a1*x^4+a2*x^3+a3*x^2+a4*x+a5->min"<<endl; Inputkoef(); Inputotrez(); double x,xk,yk,k; k=0; xk=a+((3-pow(5,0.5))/2)*(b-a); yk=a+b-xk; Out.open("Solution.txt"); cout << "Solution of the golden section method:\n"; Out << "Solution of the golden section method:\n"; cout << "k\ta\tb\tXk\tYk\tF(Xk)\tF(Yk)\n"; Out << "k\ta\tb\tXk\tYk\tF(Xk)\tF(Yk)\n"; do { cout << k << "\t" << a << "\t" << b << "\t" << xk << "\t" << yk << "\t" << f(xk) << "\t" << f(yk) << endl; Out << k << "\t" << a << "\t" << b << "\t" << xk << "\t" << yk << "\t" << f(xk) << "\t" << f(yk) << endl; if(f(xk)<=f(yk)) { b=yk; yk=xk; xk=a+b-xk; } else if(f(xk)>f(yk)) { a=xk; xk=yk; yk=a+b-yk; } k++; } while (abs(b-a)>E); cout << k << "\t" << a << "\t" << b << "\t" << xk << "\t" << yk << "\t" << f(xk) << "\t" << f(yk) << endl; Out << k << "\t" << a << "\t" << b << "\t" << xk << "\t" << yk << "\t" << f(xk) << "\t" << f(yk) << endl; x=(a+b)/2; cout<< "x = " << x << "\tf(x) = " << f(x); Out<< "x = " << x << "\tf(x) = " << f(x); Out.close(); return 0; } Результат виконання програми при введенні даних, що відповідать завданню цієї курсової роботи: · Метод Фібоначчі // fib.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <iostream> #include <cmath> #include <fstream> using namespace std; double PoslidovnistFib(double); double g[5]={0}; double a,b; double E=0; void Inputkoef() { for (int i=0;i<5;i++) { cout<<"Enter a value a["<<i+1<<"] : "; cin>>g[i]; } } void Inputotrez() { cout<<"Enter the lower limit segment a="; cin>>a; cout<<"Enter the upper limit of the interval b="; cin>>b; cout<<"enter the calculation accuracy E="; cin>>E; } double f(double); double f(double x) { return (g[0]*pow(x,4)+g[1]*pow(x,3)+g[2]*pow(x,2)+g[3]*x+g[4]); }; ofstream Out; int main(int argc, char* argv[]) { cout<<"function has the form: a1*x^4+a2*x^3+a3*x^2+a4*x+a5->min"<<endl; Inputkoef(); Inputotrez(); int d,k=0,p=0; double eps,x,y,N=-1,kk=1.0; eps = 0.00001 ; Out.open("Solution.txt"); cout << "Solution of Fibonachi method:\n"; Out << "Solution of Fibonachi method:\n"; double L0=b-a; do { N++; } while (PoslidovnistFib(N)<(abs(L0)/E)); cout << "N = " << N << endl; Out << "N = " << N << endl; cout << "k\ta\tb\tXk\tYk\tF(Xk)\tF(Yk)\n"; Out << "k\ta\tb\tXk\tYk\tF(Xk)\tF(Yk)\n"; x=a+(PoslidovnistFib(N-2)/PoslidovnistFib(N))*(b-a); y=a+(PoslidovnistFib(N-1)/PoslidovnistFib(N))*(b-a); cout << k << "\t" << a << "\t" << b << "\t" << x << "\t" << y << "\t" << f(x) << "\t" << f(y) << endl; Out << k << "\t" << a << "\t" << b << "\t" << x << "\t" << y << "\t" << f(x) << "\t" << f(y) << endl; do { if (f(x)<=f(y)) { b=y; y=x; x=a+(PoslidovnistFib(N-k-3)/PoslidovnistFib(N-k-1))*(b-a); } else if (f(x)>f(y)) { a=x; x=y; y=a+(PoslidovnistFib(N-k-2)/PoslidovnistFib(N-k-1))*(b-a); }; k++; cout << k << "\t" << a << "\t" << b << "\t" << x << "\t" << y << "\t" << f(x) << "\t" << f(y) << endl; Out << k << "\t" << a << "\t" << b << "\t" << x << "\t" << y << "\t" << f(x) << "\t" << f(y) << endl; } while(k!=N-3); k = 0; cout << "\tFi(N) = " << PoslidovnistFib << endl; Out << "\tFi(N) = " << PoslidovnistFib << endl; do { cout << "k = " << k << "\tFi(N-k-1) = " << PoslidovnistFib(N-k-1) << "\tFi(N-k-2) = " << PoslidovnistFib(N-k-2) << "\tFi(N-k-3) = " << PoslidovnistFib(N-k-3) << endl; Out << "k = " << k << "\tFi(N-k-1) = " << PoslidovnistFib(N-k-1) << "\tFi(N-k-2) = " << PoslidovnistFib(N-k-2) << "\tFi(N-k-3) = " << PoslidovnistFib(N-k-3) << endl; k++; } while(k!=N-3); y=x+eps; if (f(x)<=f(y)) { b=y; } if (f(x)>f(y)) { a=x; }; x = (b+a)/2; cout << "x = " << x << "\tf(x) = " << f(x) <<endl; Out << "x = " << x << "\tf(x) = " << f(x) <<endl; Out.close(); return 0; } double PoslidovnistFib(double n) { double f0,fk,p; f0=1; fk=1; for(int i=2;i<=n;i++) { p=fk; fk=fk+f0; f0=p; } if (n<2) { fk=1; } return fk; }; Результат виконання рограми: Solution of Fibonachi method: N = 17 kabXkYkF(Xk)F(Yk) 0020.7639321.23607-50.8575-59.9845 10.76393221.236071.52786-59.9845-53.5866 20.7639321.527861.055731.23607-58.9696-59.9845 31.055731.527861.236071.34752-59.9845-58.8184 41.055731.347521.167181.23607-59.998-59.9845 51.055731.236071.124611.16718-59.7535-59.998 61.124611.236071.167181.1935-59.998-60.0537 71.167181.236071.19351.20975-60.0537-60.0508 81.167181.209751.183441.1935-60.0411-60.0537 91.183441.209751.19351.19969-60.0537-60.056 101.19351.209751.199691.20356-60.056-60.0553 111.19351.203561.197371.19969-60.0556-60.056 121.197371.203561.199691.20124-60.056-60.0559 131.197371.201241.198921.19969-60.0559-60.056 141.198921.201241.199691.20046-60.056-60.056 Fi(N) = 004112A8 k = 0Fi(N-k-1) = 1597Fi(N-k-2) = 987Fi(N-k-3) = 610 k = 1Fi(N-k-1) = 987Fi(N-k-2) = 610Fi(N-k-3) = 377 k = 2Fi(N-k-1) = 610Fi(N-k-2) = 377Fi(N-k-3) = 233 k = 3Fi(N-k-1) = 377Fi(N-k-2) = 233Fi(N-k-3) = 144 k = 4Fi(N-k-1) = 233Fi(N-k-2) = 144Fi(N-k-3) = 89 k = 5Fi(N-k-1) = 144Fi(N-k-2) = 89Fi(N-k-3) = 55 k = 6Fi(N-k-1) = 89Fi(N-k-2) = 55Fi(N-k-3) = 34 k = 7Fi(N-k-1) = 55Fi(N-k-2) = 34Fi(N-k-3) = 21 k = 8Fi(N-k-1) = 34Fi(N-k-2) = 21Fi(N-k-3) = 13 k = 9Fi(N-k-1) = 21Fi(N-k-2) = 13Fi(N-k-3) = 8 k = 10Fi(N-k-1) = 13Fi(N-k-2) = 8Fi(N-k-3) = 5 k = 11Fi(N-k-1) = 8Fi(N-k-2) = 5Fi(N-k-3) = 3 k = 12Fi(N-k-1) = 5Fi(N-k-2) = 3Fi(N-k-3) = 2 k = 13Fi(N-k-1) = 3Fi(N-k-2) = 2Fi(N-k-3) = 1 x = 1.20046f(x) = -60.056 Список використаної літератури1. Таха, Хемди А. Введение в исследование операций, 7-е издание.: Пер. с англ. – М.: Издательский дом «Вильямс», 2005. – 912с.: ил. – Парал. тит. англ. 2. Сухарев А.Г., Тимохов А.В., Федоров В.В. Курс методов оптимизации: учеб. пособие-2-ое изд.-М.:ФИЗМАТЛИТ, 2005 3. Н.И. Глебов, Ю.А. Кочетов, А.В. Плясунов. Методы оптимизации: учебное пособие. - Новосибирск: Новосибирский государственный университет, 2000. – 105 с. 4. Васильев Ф.П. Методы оптимизации. – М.: Издательство «Факториал Пресс», 2002. – 824 с. 5. Волков И.К., Загоруйко Е.А. Исследование операций-М.: МГТУ им. Н.Э. Баумана, 2000 6. Бейко И.В. и др. Методы и алгоритмы решения задач оптимизации. К: Высш.шк., 1983. – 513с 7. Ю. А. Кочетов, А.В. Плясунов. Методы оптимизации: учебное пособие. - Новосибирск: Новосибирский государственный университет, 2000. – 105 с. |