я розв язання задач лінійного програмування у пакеті оптімізації Optimization Toolbox вікорістовується функція linprog. Вона призначила для розв язування задачі увазі:
f ( x ) =, (1)
A В· x? b , (2)
Aeq В· x = beq , (3)
lb? x? ub , (4)
де c , x , b , beq , lb , < i> ub - вектор-стовпчік, A , Aeq - прямокутні матріці, и яка має такий синтаксис:
= linprog (c, A, b, Aeq, beq); = linprog (c, A, b, Aeq, beq, lb, ub); = linprog (c, A, b, Aeq, beq, lb, ub, x0); = linprog (c, 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 (...).
Розглянемо Особливості параметрів exitflag, lambda, output, Які Використовують у Функції linprog. Так параметр exitflag пріймає додатне значення, а ЯКЩО ітераційній процес завершівся у відповідності до заданої точності обчислень; відємне значення, а ЯКЩО ітераційній процес НЕ збігається до розвязка, і 0, ЯКЩО Було перевіщено Максимально кількість ітерацій, яка візначається за параметром MaxIten, або максимальними кількість обчислень значень цільової Функції, яка візначається за параметром MaxFunEvals.
Параметр lambda являє собою структуру з полями, Які містять множнікі Лагранжа для кожної групи обмежень задачі в точці x, что є результатом розв'язування поставленої задачі:
ineqlin - для обмежень-нерівностей,
eqlin - для обмежень-рівнянь,
upper - для прямих обмежень типом x? ub ,
lower - для прямих обмежень типом lb? x ,
при цьом ненульові елєменти векторів у полях параметра lambda відповідають активним обмеженності для знайденої точки x.
Если в умові задачі деякі вхідні дані відсутні, то вместо відповідніх величин треба ставити []. Наприклад, ЯКЩО в умові задачі (1) - (4) відсутні обмеження-нерівності виду (2), то треба ввести A = [] и b = []. p> Функція может використовуват алгоритм Великої розмірності lipsol або алгоритм середньої розмірності (метод проекцій).
3. Приклад Вирішення оптімізаційної задачі
Розглянемо приклад Вирішення задачі лінійного програмування у середовіщі MATLAB.
знайте f (x) = x1 - 4x2 - 2x3? min
x1 + 2x2 + 2x3? 81 + x2 - x3? 2
x1 - 3x2 + 3x3? 6j? 0, j = 1, 2, 3
розвязання
Вхідні дані задачі подам у матричному вігляді. Для цього у вікні Command Window пакету MATLAB треба віконаті послідовно Такі команди (% - ... - Коментарі до відповідніх Дій):
>> f = [1, -4, -2];% Вектор Коефіцієнтів лінійної цільової Функції
>>% Матриця Коефіцієнтів обмежень-нерівностей
>> A = [-1 2 лютого...