Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
КР_ОПТ_с12.doc
Скачиваний:
0
Добавлен:
27.08.2019
Размер:
213.5 Кб
Скачать

1.2.Визначення екстремумів функцій декілька змінних

Пошук мінімуму функції декілька змінних виконує функції fminsearch і fminunc. Визначати екстремуми цільової функції декілька змінних доцільно в такому порядку.

  1. Побудувати лінії рівня графіка цільової функції (двох змінних).

Лінії рівня цільової функції допомагають визначити початкову точку екстремуму, оскільки вживані алгоритми оптимізації реалізують пошук локальних мінімумів цільової функції.

Для побудови ліній рівня цільової функції можна використовувати такий код:

xs1 = % задати вектор зміни змінній 1;

xs2 = % задати вектор зміни змінній 2;

[x1,x2] = meshgrid(xs1,xs2);

z = % ввести код обчислення цільової функції

[C,h] = contour(x1, x2,z);

grid on

  1. Створити m-файл, що виконує обчислення значень цільової функції двох змінних.

Можна створити файл, наприклад, з ім'ям fun2. Функція fun2 приймає векторний аргумент x і повертає скаляр – значення цільової функції в точці x:

function f = fun2(x)

f = ... % обчислює значення функції в точці x.

При зверненні до цільової функції використовується покажчик на неї

x = fminsearch(@fun2,. . .)

  1. Задати параметри рішення задачі оптимізації:

  • допустиме відхилення від точного рішення – 10–8.

  • відображення результатів на кожній ітерації.

Значення решти параметрів – за умовчанням. Параметри оптимізації задають командою optimset, варіанти використання цієї команди див. help optimset.

  1. Знайти рішення екстремальної задачі, використовуючи функцію fminsearch.

Можливий варіант програми має вигляд

clear, clc

x0 = % початкова точка (вектор)

options = optimset(. . .);

[x,fval] = fminsearch(@fun,x0,options);

fprintf(. . . ) % виведення значень x і fval

Використовуйте функцію fprintf для форматного виведення значень x і fval. Запишіть значення полий структури output.

  1. Позначити на графіці ліній рівня цільової функції точки екстремумів. Для цього можна використовувати функцію plot і команду hold on

  1. Побудувати графік зміни значення цільовій функції.

Графік треба побудувати залежно від кількості ітерацій до, тобто f(k). Для побудови графіка можна використовувати результати виводу в командне вікно відповідних значень на кожній ітерації. Ці результати одночасно можна записати у файл текстового формату, вставивши в програму команди

diary('имя_файла'), diary on

перед рядком виклику функції fminsearch. Вивід у файл закінчується після виконання в програмі команди diary off.

  1. Знайти рішення тієї ж екстремальної задачі, використовуючи функцію fminunc.

  1. Побудувати графік зміни значення цільовій функції залежно від кількості ітерацій тобто f(k).

  1. Зробити висновки за завданням.

1.3.Рішення задачі лінійного програмування

Задачу лінійного програмування можна вирішити за допомогою функції linprog. Знаходити екстремальне рішення доцільно в такому порядку.

  1. Ввести умови завдання лінійного програмування.

У файл програми ввести вектор-стовпець коефіцієнтів цільової функції, матрицю умов, вектор-стовпець ресурсів, вектор-стовпець обмежень.

  1. Задати параметри рішення задачі лінійного програмування:

  • використання середньомасштабного алгоритму;

  • виведення діагностичної інформації.

Значення решти параметрів – за умовчанням. Параметри оптимізації задають командою optimset, варіанти використання цієї команди див. help optimset.

  1. Вирішити задачу лінійного програмування за допомогою функції linprog.

Можливий варіант програми:

clear, clc

f = % вектор-стовпець коефіцієнтів цільової функції

A = % матриця умов

b = % вектор-стовпець ресурсів

lb = zeros( ); % вектор-стовпець обмежень

options = optimset(..);

[x,fval,exitflag,output,lambda] = linprog(f,A,b,[],[],lb,[],[],options);

fprintf(...)

Використовуйте функцію fprintf для виведення формату значень x і fval.

Запишіть діагностичну інформацію і значення полів структури output.

  1. Побудувати графік області допустимих рішень.

Графіком області допустимих рішень задачі лінійного програмування є замкнутий випуклий багатокутник. Для його побудови потрібно знайти координати точок вершин багатокутника вирішенням систем відповідних пар лінійних рівнянь-обмежень. Систему зручно записати в матричному вигляді

,

де C – матриця коефіцієнтів (розмірності 2х2) при векторі x; d – вектор правих частин системи, розмірності 2х1.

Тоді для її вирішення можна використовувати такий код:

C = [. .;. .]; % матриця коефіцієнтів

d = [.; .]; % вектор правих частин системи

ха = C\d; % вирішення рівняння, вектор

Для побудови області допустимих значень можна використовувати функцію fill. Варіант програми для побудови замкнутої області по координатах вершин точок трикутника ABC має вигляд

X = [ха(1), xb(1), xc(1)];

Y = [ха(2), xb(2), xc(2)];

fill(X,Y,'y'), grid on

axis( )

Команда axis дозволяє встановити зручний діапазон по осях графіка.

  1. Позначити на графіці області допустимих рішень точку отриманого рішення.

Для цього можна використовувати функцію plot і команду hold on

  1. Зробити висновки за завданням.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]