Решение задач оптимизации в среде Mat Lab



МИНОБРНАУКИ РОССИИ

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

высшего образования

Тверской государственный технический университет

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

по дисциплине:

“Автоматизация технологических процессов и производств”

на тему:

“ Решение задач оптимизации

в средеMatLab

Выполнил:

Студент гр. УТС 13.01

Мякатин И.Д.

Принял:

Зав. каф. АТП, д.т.н.

Марголис Б.И.

Тверь

2016

Цель работы: Ознакомиться со способами решения задач в средеMatLab. Рассмотреть несколько типовых примеров задач оптимизации и реализовать программу в средеMatLab для их решения.

Optimization ToolBox

СредаMatLab содержит расширение “OptimizationToolBox”, обеспечивающее доступ к сервисным средствам обычной и крупномасштабной (большой размерности) оптимизации.

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

Функции нелинейной оптимизации

С их помощью можно определить оптимум целевой фунции одной(fminbnd) или нескольких(fminsearch) переменных. Функцииfminunc иfmincon  позволяют решать оптимизационные задачи градиентными методами соответственно при отсутствии и наличии ограничений. [2]

Реализуем программу в средеMatLab для решения некоторых типовых задач оптимизации

  1. Поиск минимума функции одной переменной вида
  2. Поиск минимума функции нескольких переменных вида
  3. Поиск оптимальных настроек ПИД-регулятора при наличии ограничений, путём минимизации целевой функции вида , где  - коэффициенты усиления дифференциальной, пропорциональной и интегральной составляющих регулятора соответственно.

Листинг программы

Файл-сценарий

clear

closeall

clc

method=input(['Выберите метод оптимизации(1-Метод золотого сечения,'...

'параболическая интерполяция,2-Метод Нелдера-Мида(Симплекс): '...

'3-Квазиньютоновский метод, 4-поиск оптимальных настроек регулятора : )']);

optset=optimset('Display','iter','MaxFunEvals',500);

switch method

case 1

       nf=1;

       [xmin,fval,exitflag,output]=fminbnd(@fun,-2,2,optset,nf)

case 2

            nf=input('Введите номер функции: ');

if nf==1

           x0=0;

else

           x0=[0 0];

end;

       [xmin,fval,exitflag,output]=fminsearch(@fun,x0,optset,nf)

case 3

if nf==1

           x0=0;

else

           x0=[0 0];

end;

       [xmin,fval,exitflag,output]=fminunc(@fun,x0,optset,nf)

case 4

global W tz sigz mz

       tz=10;sigz=20; mz=0.5;

       W=tf([2],[1 2 2])

       K=[1 1 1];

%       K=[2.261 23.07 11.77]

       A=[];b=[];Aeq=[];beq=[];nonlcon=[];

       lb=[0 0 0];ub=[100 100 100];

       [xmin,fval,exitflag,output]=fmincon(@fun2,K,A,b,Aeq,beq,lb,ub,@ogran,optset)

       Wreg=tf([xmin(1) xmin(2) xmin(3)],[1 0])

       Wzam=feedback(W*Wreg,1,-1);

               [u,t]=step(Wzam);

        sig=((max(u)-u(end))/max(u))*100;

tp=t(end);

        disp(['Время переходного процесса: ',num2str(tp),' c'])

        disp(['Перерегулирование: ',num2str(sig),' %'])

[numz,denz]=tfdata(Wzam,'v');

   r=roots(denz);

   q=1;

for c=1:length(r)

if( imag(r(c))~=0 )

     m(q)=abs(real(r(c))/imag(r(c)));

      q=q+1;

end;

end;

m=min(m);

disp(['Степень колебательности: ',num2str(m)])

step(Wzam)

gridon;

end;

Файл-функция (функции для решения 1 и 2 задачи )

function y=fun(x,nf)

switch nf

case 1

       y=x^4+exp(-x);

case 2

       y=4*x(1)+x(1)^2+8*x(2)+x(2)^2;

end

Файл-функция (Целевая функция для решения 3 задачи )

function y = fun2(K)

global tz sigz mz W

       Wr=tf([K(1) ,K(2) ,K(3)],[1 0]);

       Wz=feedback(W*Wr,1,-1);

       [u,t]=step(Wz);

        sig=((max(u)-u(end))/max(u))*100;

        tp=t(end);

   [~,denz]=tfdata(Wz,'v');

   r=roots(denz);

   q=1;

for c=1:length(r)

if( imag(r(c))~=0 )

     m(q)=abs(real(r(c))/imag(r(c)));

q=q+1;

end;

end;

m=min(m);

       wt=1/3;wsig=1/3;wm=1/3;

      y=wt*abs(tp-tz)/tz+wsig*abs(sig-sigz)/sigz+wm*abs(m-mz)/mz;

end

Файл-функция (ограничения для решения 3 задачи)

function [c,ceq] = ogran(K)

   c=-0.25+K(1)*K(3)/(K(2)*K(2));

   ceq=[];

end

Полученные результаты

  1. Решение 1-й поставленной задачи:

Выберите метод оптимизации(1-Метод золотого сечения,параболическая интерполяция,2-Метод Нелдера-Мида(Симплекс): 3-Квазиньютоновский метод, 4-поиск оптимальных настроек регулятора: )1

 Func-count     x          f(x)         Procedure

   1      -0.472136      1.65311        initial

   2       0.472136     0.673359        golden

   3        1.05573      1.59019        golden

   4       0.303856     0.746492        parabolic

   5       0.469457     0.673913        parabolic

   6       0.546171     0.668148        parabolic

   7       0.740805     0.777902        golden

   8       0.528901     0.667505        parabolic

   9       0.527715     0.667504        parabolic

  10       0.528253     0.667504        parabolic

  11       0.528219     0.667504        parabolic

  12       0.528286     0.667504        parabolic

Optimization terminated:

the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004

xmin =

   0.5283

fval =

   0.6675

exitflag =

    1

  1. Решение 2-й поставленной задачи

2.1.Выберите метод оптимизации(1-Метод золотого сечения,параболическая интерполяция,2-Метод Нелдера-Мида(Симплекс): 3-Квазиньютоновский метод, 4-поиск оптимальных настроек регулятора: )2

Введитеномерфункции: 2

Iteration   Func-count     min f(x)         Procedure

    0            1                0

    1            3                0         initial simplex

    2            5      -0.00249961         expand

    3            7      -0.00574943         expand

    4            9       -0.0123711         expand

    5           11       -0.0221788         expand

    6           13       -0.0403092         expand

    7           15       -0.0689601         expand

    8           17        -0.119427         expand

    9           19        -0.201692         expand

   10           21        -0.342849         expand

   11           23        -0.575655         expand

   12           25        -0.967263         expand

   13           27         -1.60959         expand

   14           29         -2.65746         expand

   15           31         -4.30988         expand

   16           33          -6.7788         expand

   17           35         -10.0482         expand

   18           37         -12.9741         expand

   19           39         -13.2164         reflect

   20           41         -13.2164         contract outside

   21           43         -13.2164         contract inside

   22           45         -13.2348         contract inside

   23           47         -13.2363         reflect

   24           49          -13.263         contract inside

   25           51         -13.2846         expand

   26           53         -13.2846         contract inside

   27           55         -13.3086         expand

   28           57         -13.3429         expand

   29           59         -13.4275         expand

   30           61         -13.4878         expand

   31           63          -13.749         expand

   32           64          -13.749         reflect

   33           66         -14.2972         expand

   34           67         -14.2972         reflect

   35           69         -15.2022         expand

   36           71         -15.7263         expand

   37           73         -17.5199         expand

   38           75         -18.3408         expand

   39           77         -19.7737         expand

   40           79         -19.7737         contract outside

   41           81         -19.7737         contract inside

   42           82         -19.7737         reflect

   43           84         -19.9675         reflect

   44           86         -19.9675         contract inside

   45           87         -19.9675         reflect

   46           89         -19.9925         contract inside

   47           91         -19.9933         contract inside

   48           93         -19.9943         contract inside

   49           95         -19.9997         contract inside

   50           97         -19.9997         contract inside

   51           99         -19.9997         contract outside

   52          101         -19.9997         contract inside

   53          103         -19.9997         contract inside

   54          105         -19.9998         reflect

   55          107         -19.9999         contract inside

   56          109              -20         contract inside

   57          111              -20         contract outside

   58          113              -20         contract inside

   59          115              -20         contract outside

   60          117              -20         contract inside

   61          119              -20         contract inside

   62          121              -20         contract outside

   63          123              -20         contract inside

   64          125              -20         contract inside

   65          127              -20         contract inside

   66          129              -20         contract inside

   67          131              -20         contract inside

   68          133              -20         contract inside

   69          135              -20         contract inside

   70          137              -20         contract inside

Optimization terminated:

the current x satisfies the termination criteria using OPTIONS.TolX of 1.000000e-004

and F(X) satisfies the convergence criteria using OPTIONS.TolFun of 1.000000e-004

xmin =

  -2.0000   -4.0000

fval =

 -20.0000

exitflag =

    1

2.2.Выберите метод оптимизации(1-Метод золотого сечения,параболическая интерполяция,2-Метод Нелдера-Мида(Симплекс): 3-Квазиньютоновский метод, 4-поиск оптимальных настроек регулятора: )3

Введитеномерфункции: 2

Warning: Gradient must be provided for

trust-region algorithm;

 using line-search algorithm instead.

> In fminunc at 347

 In laba5a at 29

First-order

Iteration  Func-count       f(x)        Step-size       optimality

0           3                0                             8

1           6            -8.75          0.125              6

2           9              -20              1              0

Local minimum found.

Optimization completed because the size of the gradient is less than

the default value of the function tolerance.

<stopping criteria details>

xmin =

  -2.0000   -4.0000

fval =

  -20

exitflag =

    1

  1. Решение 3-й поставленной задачи

В качестве начальных значений параметров регулятора [1 1 1]

Значения параметров регулятора, полученные при помощи альтернативного метода РЧХ в качестве начальных

[2.261 23.07 11.77]

Выберите метод оптимизации(1-Метод золотого сечения,параболическая интерполяция,2-Метод Нелдера-Мида(Симплекс): 3-Квазиньютоновский метод, 4-поиск оптимальных настроек регулятора: )4

Transfer function:

     2

-------------

s^2 + 2 s + 2

K =

    1     1     1

Local minimum possible. Constraints satisfied.

xmin =

   0.2893    1.8760    2.6281

fval =

   0.1462

exitflag =

    5

Transfer function:

0.2893 s^2 + 1.876 s + 2.628

----------------------------

            s

Время переходного процесса: 10.2528 c

Перерегулирование: 18.2325 %

Степень колебательности: 0.33751

Выберите метод оптимизации(1-Метод золотого сечения,параболическая интерполяция,2-Метод Нелдера-Мида(Симплекс): 3-Квазиньютоновский метод, 4-поиск оптимальных настроек регулятора: )4

Transfer function:

     2

-------------

s^2 + 2 s + 2

K =

   2.2610   23.0700   11.7700

Local minimum possible. Constraints satisfied.

xmin =

   2.2856   23.0626   11.7730

fval =

   0.0193

exitflag =

    5

Transfer function:

2.286 s^2 + 23.06 s + 11.77

---------------------------

            s

Время переходного процесса: 9.7925 c

Перерегулирование: 19.4689 %

Степень колебательности: 0.50525

Рассмотрим одну из самых распространенных и востребованных оптимизационных задач в логистике – транспортную задачу.

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

Суммарная мощность поставщиков равна 280, суммарная мощность потребителей равна 250, следовательно, задача является открытой и необходимо свести ее к закрытой. Для этого нужно ввести фиктивного потребителя, на которого будет приходиться 30 ед. продукции поставщиков.

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

Файл-сценарий:

clc

closeall

clear

global C X B;

optset=optimset('Display','iter','Algorithm','Active-set');

disp('Вектор мощностей поставщиков')

X=[80,120,50,30]

B=[60,40,40,90,10,10];

disp('Вектор мощностей потребителей')

B(7)=sum(X)-sum(B)

C=[4 8 3 12 9 7;

2 1 24 7 8 5;

   5 11 7 4 1 6;

   6 7 4 3 8 8];

C(1,7)=zeros;

disp('Матрица транспортных издержек')

С

K=10*ones(size(C));

A=[];b=[];Aeq=[];beq=[];

lb=zeros(size(C));ub=100*ones(size(C));

[xmin,fval]=fmincon(@fun,K,A,b,Aeq,beq,lb,ub,@ogr,optset);

disp('Матрица переменных')

xmin

disp(['Наименьшее значение целевой функции= ', num2str(fval)])

Файл-функция  (Целевая функция)

function y = fun(M)

global C;

V=C.*M;

y=sum(V(:));

end

Файл-функция  (ограничения)

function [c,ceq] = ogr(M)

global X B

s=size(M);

for i=1:s(1)

ceq(i)=X(i)-sum(M(i,:));

end

for j=1:s(2)

ceq(i+j)=B(j)-sum(M(:,j));

end

ceq(i+j)=M(1,j,1)-B(j);

c=[];

end

Результаты работы программы

Вектор мощностей поставщиков

X =

   80   120    50    30

Вектор мощностей потребителей

B =

60    40    40    90    10    10    30

Матрицатранспортныхиздержек

C =

    4     8     3    12     9     7     0

    2     1    24     7     8     5     0

    5    11     7     4     1     6     0

    6     7     4     3     8     8     0

                               Max     Line search  Directional  First-order

Iter F-count        f(x)   constraint   steplength   derivative   optimality Procedure

   0     29         1600           50                                         Infeasible start point

   1     58      1361.72   1.705e-013            1         -4.3         24.7

   2     87      1104.87    4.97e-007            1        -18.4         12.8  Hessian modified

   3    116      1018.46   3.551e-007            1        -8.52         5.48

   4    145      886.307   1.076e-006            1        -8.08            6  Hessian modified

   5    174       852.63   1.394e-007            1        -4.27         9.75  Hessian modified twice

   6    203      822.528   2.015e-007            1         -4.8         8.75

   7    232      799.651   2.463e-007            1        -4.12         6.88

   8    261      779.708   8.118e-008            1        -4.25         8.13  Hessian modified twice

   9    290      771.398   7.943e-008            1        -4.88         7.41

  10    319          750   1.249e-007            1        -4.55          2.4  Hessian modified

Local minimum found that satisfies the constraints.

Optimization completed because the objective function is non-decreasing in

feasible directions, to within the default value of the function tolerance,

and constraints were satisfied to within the default value of the constraint tolerance.

<stopping criteria details>

Active inequalities (to within options.TolCon = 1e-006):

 lower      upper     ineqlin   ineqnonlin

   3

   4

   5

   7

   8

  10

  11

  12

  13

  17

  18

  20

  23

  24

  26

  27

  28

Матрицапеременных

xmin =

 Columns 1 through 4

   9.8149    0.0000   40.0000   -0.0000

  50.1851   40.0000   -0.0000   20.0000

   0.0000   -0.0000   -0.0000   40.0000

  -0.0000    0.0000         0   30.0000

Columns 5through 7

  -0.0000    0.1851   30.0000

        0    9.8149    0.0000

  10.0000   -0.0000   -0.0000

   0.0000   -0.0000   -0.0000

Наименьшее значение целевой функции = 750

Список литературы

  1. Конспекты лекций по курсу “АТПП”
  2. Марголис, Б.И.  Компьютерные методы анализа и синтеза систем автоматического регулирования в средеMatlab / Б.И.Марголис. – Учеб. Пособие для вузов. – Тверь: изд-во ТвГТУ, 2015.-92 с.
  3. http://matlab.exponenta.ru/optimiz/book_1/1.php
  4. http://matlab.exponenta.ru/optimiz/book_4/




Похожие работы, которые могут быть Вам интерестны.

1. РЕШЕНИЕ ПРИКЛАДНЫХ СХЕМОТЕХНИЧЕСКИХ ЗАДАЧ

2. Решение алгебраических задач геометрическим способом

3. Постановка и решение задач системы нелинейных уравнений

4. Решение задач с параметром, сводящихся к исследованию корней квадратного трехчлена

5. РАЗВИТИЕ ПОЗНАВАТЕЛЬНОЙ АКТИВНОСТИ ОБУЧАЮЩИХСЯ ПРИ РЕШЕНИИ ЗАДАЧ ОПТИМИЗАЦИИ В 7-9 КЛАССАХ

6. Методика проведения кружковых занятий по теме «Решение планиметрических задач методом движений»

7. Решение колористических задач в процессе работы над живописным пейзажем школьниками младших классов

8. Рэп в подростковой среде

9. СОЗДАНИЕ ПРАКТИКУМА ПО 3D МОДЕЛИРОВАНИЮ В СРЕДЕ AUTODESK

10. Макро и микроэлементы в среде и организме человека