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

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

Пример 10.8. Туристическая фирма заключила контракт с двумя турбазами на одном из черноморских курортов, рассчитанных соответственно на 195 и 165 человек. Туристам для посещения предлагается дельфинарий в городе, ботанический сад и походы в горы.

Таблица 10.2. Стоимость одного посещения
Турбаза Дельфинарий Ботанический сад Поход в горы
1 5 9 20
2 10 12 24

Составить маршрут движения туристов так, чтобы это обошлось возможно дешевле, если дельфинарий принимает в день 90 организованных туристов, ботанический сад — 170, а в горы в один день могут пойти 105 человек.

Стоимость одного посещения выражается таблицей 10.2.

Для решения задачи введём следующие обозначения:

x1 — число туристов первой турбазы, посещающих дельфинарий;

x2 — число туристов первой турбазы, посещающих ботанический сад;

x3 — число туристов первой турбазы, отправляющихся в поход;

x4 — число туристов второй турбазы, посещающих дельфинарий;

x5 — число туристов второй турбазы, посещающих ботанический сад;

x6 — число туристов второй турбазы, отправляющихся в поход.

Составим функцию цели, заключающуюся в минимизации стоимости мероприятий фирмы: Z = 5x1 + 9x2 + 20x3 + 10x4 + 12x5 + 24x6.

Руководствуясь условием задачи, определим ограничения:

\left\{
								\begin{aligned}
								x1 &+ x4 \leq 90;\\
								x2 &+ x5 \leq 170;\\
								x3 &+ x6 \leq 105;\\
								x1 &+ x2 + x3 = 195;\\
								x4 &+ x5 + x6 = 165.
								\end{aligned}
								\right.

Количество туристов, участвующих в мероприятиях не может быть отрицательным: x1\geq 0,x2\geq 0,x3 \geq 0,x4\geq 0,x5\geq 0,x6\geq 0.

Кроме того, необходимо помнить, что это задача целочисленного программирования (количество туристов — число целое!!!).

В массиве x будут хранится значения x1, x2, x3, x4, x5 и x6.

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

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

a=\begin{pmatrix}1&0&0&1&0&0\\0&1&0&0&1&0\\0&0&1&0&0&1\\1&1&1&0&0&0\\0&0&0&1&1&1\end{pmatrix} –– матрица системы ограничений шесть переменных и пять ограничений,

b=\begin{pmatrix}90\\170\\105\\195\\165\end{pmatrix} — свободные члены системы ограничений,

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

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

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

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

	
c = [5; 9; 20; 10; 12; 24];
a =[1 0 0 1 0 0;0 1 0 0 1 0;0 0 1 0 0 1;1 1 1 0 0 0;0 0 0 1 1 1];
b = [90; 170; 105; 195; 165];
ctype="UUUSS"; vartype= "IIIIII"; sense =1;
[xmin, fmin, status]= glpk(c, a, b, [ ], [], ctype, vartype, sense)
% Результаты решения
xmin =
	90
	5
	100
	0
	165
	0
fmin = 4475
status = 171	
Листинг 10.11. Решение задачи из примера 10.8

Значение переменной status = 171 свидетельствует о корректном решении задачи целочисленного программирования.

В результате получилось следующее решение: 90 туристов первой турбазы посетят дельфинарий, 5 туристов первой турбазы и все 165 второй турбазы поедут в ботанический сад, 100 туристов первой турбазы отправятся в поход. Стоимость мероприятия составит 4475.

Таблица 10.3. Данные к задаче 10.9
Тип оборудования Затраты времени на обработку одного изделия вида (станко-ч) Общий фонд времени работы оборудования (ч)
А Б В
Фрезерное 2 4 5 120
Токарное 1 8 6 280
Сварочное 7 4 5 240
Шлифовальное 4 6 7 360
Прибыль (тыс. грн) 10 14 12
Алексей Игнатьев
Алексей Игнатьев

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

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

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