Компания ALT Linux
Опубликован: 12.03.2015 | Доступ: свободный | Студентов: 582 / 64 | Длительность: 20:55:00
Лекция 10:

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

Пример 10.9. Для изготовления трёх видов изделий (А, Б, В) используется токарное, фрезерное, шлифовальное и сварочное оборудование. Затраты времени на обработку одного изделия каждого типа представлены в таблице 10.3. Общий фонд рабочего времени каждого вида оборудования и прибыль от реализации изделий каждого типа представлены этой же таблице. Составить план выпуска изделий для достижения максимальной прибыли [1].

Пусть x_1 — количество изделий вида А, x_2 — количество изделий вида Б, x_3 — вида В.

Прибыль от реализации всех изделий составляет

L=10x_{1}+14x_{2}+12x_{3} ( 10.9)

Общий фонд рабочего времени фрезерного оборудования составляет 2x_{1}+4x_{2}+5x_{3}. Эта величина не должна превышать 120 часов.

2x_{1}+4x_{2}+5x_{3}\le 120 ( 10.10)

Запишем аналогичные ограничения для фонда рабочего времени токарного, сварочного, шлифовального оборудования

\left\{\begin{matrix}x_{1}+8x_{2}+6x_{3}\le 280\\7x_{1}+4x_{2}+5x_{3}<240\\4x_{1}+6x_{2}+7x_{3}\le
360\end{matrix}\right. ( 10.11)

Таким образом получаем следующую задачу линейного программирования.

Найти такие положительные значения x_1,x_2,x_3 при которых функция цели L (10.9) достигает максимального значения и выполняются ограничения (10.10)–(10.11).

Теперь решим эту задачу в Octave с помощью функции gplk.

Сформируем параметры функции gplk:

c=\begin{pmatrix}10\\14\\12\end{pmatrix} — коэффициенты при неизвестных функции цели,

a=\begin{pmatrix}2&4&5\\1&8&6\\7&4&5\\4&6&7\end{pmatrix} — матрица системы ограничений (три переменных и четыре ограничений),

b=\begin{pmatrix}120\\280\\240\\360\end{pmatrix} –– свободные члены системы ограничений,

ctype ="UUUU"— массив, определяющий тип ограничения8Все четыре ограничения типа "меньше".,

vartype ="III"— массив, определяющий тип переменной, в данном случае все переменные целые,

sense = -1 — задача на максимум.

Решение задачи в Octave представлено в листинге 10.12

	
c = [10; 14; 12]; a =[2 4 5; 1 8 6; 7 4 5; 4 6 7]; b = [ 1 2 0; 2 8 0; 2 4 0; 3 6 0];
ctype="UUUU"; vartype= "III"; sense =-1;
[xmax, fmax, status] =glpk(c, a, b, [0;0;0], [], ctype, vartype, sense)
% Результаты решения
xmax =
	24
	18
	0
fmax = 492
status = 171
Листинг 10.12. Решение задачи из примера 10.9

Таким образом для получения максимальной прибыли (fmax =492) необходимо произвести 24 единицы изделия типа А и 18 единиц изделия типа Б. Значение параметра status = 171 говорит о корректности решения задачи линейного программирования.

Алексей Игнатьев
Алексей Игнатьев

Возможна ли разработка приложения на Octave с GUI?

Евгений Ветчанин
Евгений Ветчанин

Добрый день. Я самостоятельно изучил курс "Введение в Octave" и хочу получить сертификат. Что нужно сднлать для этого? Нужно ли записаться на персональное обучение с тьютором или достаточно перевести деньги?