MATLAB в инженерных и научных расчетах


«Подгонка» кривой - часть 5


f =- x(l)*x(2)*x(3) ;

Затем запишем ограничения в виде неравенств:

- x1 - 2 x2 - 2 x3 £ 0

  x1

+ 2 x2+ 2 x3

£ 72,

или в матричной форме:

А х £ b,

где    

          

Теперь нахождение решения представляется следующим образом:

»

А = [-1 -2 -2; 1 2 2];

» b = [0; 72];

» x0 = [10; 10; 10];   %

Стартовое значение

» [x, fval] = fmincon('myfun', x0, A, b)

x

=

24.0000

12.0000

    12.0000

fval

=

-3.4560e+003

2. Функция  linprog

Функция  linprog  обеспечивает решение задачи линейного программирования.

Функция записывается  в виде

х = linprog(f,A,b,Aeq,beq)

х = linprog(f,A,b,Aeq,beq,lb,ub)

х = linprog(f,A,b,Aeq,beq,lb,ub,x0)

х = linprog(f,A,b,Aeq,beq,lb,ub,x0,options)

[x,fval] = linprog(...)

[x,fval,exitflag] = linprog(...)

[x,fval,exitflag,output] = linprog(...)

[x,fval,exitflag,output,lambda] = linprog(...)

Аргументы и возвращаемые величины здесь аналогичны рассмотренным ранее для функции fmincon одним исключением: здесь введен дополнительный аргумент f — вектор коэффициентов линейной целевой функции. Функция может использовать алгоритм большой размерности lipsol или алгоритм средней размерности (метод проекций).

Рассмотрим примеры задач оптимизации.

Пример 1. Требуется найти решение задачи, описывающейся соотношениями

(задача линейного программирования)

f(х) = - 5 x1 – 4 x2 – 6 x3,

х1

- х2 + х3 ? 20 ,

3 x1 + 2 x2 + 4 x3

? 42

3 x1 + 2 x2

? 42

0 ? x1 , 0 ? x2 , 0 ? x3 .

Решение.

>> f = [ -5, -4, -6];  % Вектор коэффициентов линейной целевой функции

>> % Матрица коэффициентов ограничений – неравенств

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

>> b = [20; 42; 30]; % Вектор ограничений – неравенств

>> % Задание нижних границ переменных (нулей)

>> lb = zeros(3,1);

>> % Поиск решения

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

Optimization terminated successfully

x =

     0.0000

    15.0000

       3.0000

fval =

      -78.0000

exitflag =




Начало  Назад  Вперед



Книжный магазин