Решение задач статической оптимизации в пакете математического моделирования MATLAB

Страницы работы

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

Федеральное государственное образовательное учреждение

 высшего профессионального образования

«Сибирский Федеральный Университет»

ИНСТИТУТ ЦВЕТНЫХ МЕТАЛЛОВ И МАТЕРИАЛОВЕДЕНИЯ

Факультет: Химико-Металлургический

Кафедра: Автоматизации производственных процессов

Специальность: 220301

Группа: АМЦ 05-2 (МФ 05-9)

Лабораторная работа №4

«Решение задач статической оптимизации в пакете математического моделирования MATLAB»

(2 вариант)

Преподаватель:                                                                              Даныкина Г.Б.

Разработал студент:                                                                         Ефимов М.Л.

Красноярск, 2009 г.

Цель работы: ознакомиться с основными командами программного пакета Optimization Toolbox системы MATLAB в оптимизационных задачах; научиться решать задачи статической оптимизации в системе MATLAB.

1.  Оптимизация методом линейного программирования

Исходные данные:

Критерий:       необходимо максимизировать;

Ограничения:

Решение в ПП MATLAB имеет следующий вид:

>> f=[2; -3];

>> A=[1 2; -3 -2; 2 -1; 0 -1; -1 0];

>> b=[12; -8; 8; 0; 0];

>> [x,fval,exitflag,output]=linprog(f,A,b)

Optimization terminated successfully.

x =

    0.0000

    6.0000

fval =

  -18.0000

exitflag =

     1

output =

      iterations: 5

    cgiterations: 0

       algorithm: 'lipsol'

2.  Одномерная безусловная оптимизация

Исходные данные:

Критерий:

необходимо минимизировать.

Решение в ПП MATLAB имеет следующий вид:

>> f=inline('x^1/3+1/x');

>> x=fminsearch(f,1)

x =

    1.7320

>> G =x^1/3+1/x

G =

    1.1547

3.  Многомерная безусловная оптимизация

Исходные данные:

Критерий:

необходимо минимизировать.

Начальные условия:

                  

Решение в ПП MATLAB имеет следующий вид:

Способ №1:

Создаем m – файл:

function[f,g]=myfun(x)

f=(x(1)-2)^2+(3*x(2)-x(1))^2;

if nargout>1 %Проверка количества аргументов функции

    g(1)=4*x(1)-4-6*x(2);

    g(2)=18*x(2)-6*x(1);

end;

Далее в командной строке набираем:

>> options=optimset('GradObj','on');

>> x0=[1,1];

>> [x,fval]=fminunc('myfun',x0,options)

Optimization terminated successfully:

 First-order optimality less than OPTIONS.TolFun, and no negative/zero curvature detected

x =

    2.0000    0.6667

fval =

  9.8608e-032

>> % Построение графика

>> [x,y]=meshgrid(-10: 0.1: 10);

>> f=(x-2)^2+(3*y-x)^2;

>> meshc(x,y,f)

Рисунок 1 – Поверхность целевой функции

Способ №2:

Создаем m – файл:

function f=myfun2(x)

f=(x(1)-2)^2+(3*x(2)-x(1))^2;

Далее в командной строке набираем:

>> x0=[1,1];

>> [x,fval]=fminunc('myfun2',x0)

Warning: Gradient must be provided for trust-region method;

   using line-search method instead.

> In D:\toolbox\optim\fminunc.m at line 211

Optimization terminated successfully:

 Search direction less than 2*options.TolX

x =

    2.0000    0.6667

fval =

  4.7775e-016

          Вывод: Решение математических задач, в частности задачи оптимизации, очень удобно производить в ПП MATLAB. Однако для этого требуется знание специфики задания условий задачи вычислительной машине, порядка ввода информации, а также знание синтаксиса языка MATLAB.

          Результаты оптимизации полученные с помощью ПП MATLAB совпадают с результатами, полученными в ранее выполненных лабораторных работах.

Похожие материалы

Информация о работе

Тип:
Отчеты по лабораторным работам
Размер файла:
61 Kb
Скачали:
0