Чисельне рішення оптимізаційних задач

2. Пакет оптимізації Optimization Toolbox

2.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(...).

Приклад.

Цех малого підприємства повинен виготовити 100 виробів трьох типів. Кожного виробу потрібно зробити не менш 20 штук. На вироби іде відповідно 4, 3,4 і 2 кг металу при його загальному запасі 340 кг, а також по 4,75 , 11 і 2 кг пластмаси при її загальному запасі 700 кг.

Скільки виробів кожного типу х1 , х2 і х3 треба випустити для одержання максимального випуску в грошовому вираженні, якщо ціна виробу складає по калькуляції 40, 30 і 20 грн?

 

Задача зводиться до обчислення максимуму функції

f(x1,x2,x3) = 40 x1 + 30 x2 + 20 x3

при наявності обмежень

x1 ≥ 20,  x2 ≥ 20, x3 ≥ 20

4 x1 + 3,4 x2 + 2 x3 ≤ 340

4,75  x1 + 11 x2 + 2 x3 ≤ 700

x1 + x2 + x3 = 100

 

Маємо задачу лінійного програмування.

 

f=[40;30;20];% вектор коефіцієнтів лінійної цільової функції

 

% Матриця коефіцієнтів обмежень – нерівностей

A=[4 3.4 2; 4.75 11 2];

b=[340;700]; % вектор обмежень – нерівностей

Aeq=[1 1 1]; % матриця коефіцієнтів обмежень – рівностей

beq=[100]; % вектор обмежень – рівностей

 

% Задання нижніх границь змінних (нулів)

   lb=[20;20;20];

 

 % Пошук рішень, визначення максимум цільової функції

[x, fval, exitflag, output]=linprog(-f, A, b, Aeq, beq, lb)

Optimization terminated successfully

x =

   56.0000

   20.0000

   24.0000

 

fval =

   -3.3200e+003

 

exitflag =

   1

 

output =

   iterations: 5

   cgiterations: 0

   algorithm: 'lipsol'

Accessibility

Шрифти

Розмір шрифта

1

Колір тексту

Колір тла