![](/user_photo/2706_HbeT2.jpg)
- •1.2 Лабораторная работа «Решение задачи линейного
- •1.3 Лабораторная работа «Решение транспортной задачи
- •2 Нахождение условного экстремума функции
- •2.1 Лабораторная работа «Нахождение условного экстремума
- •3.2 Лабораторная работа «Нахождение кратчайшего пути»
- •3.3 Лабораторная работа «Определение максимального потока
- •Библиографический список
1.3 Лабораторная работа «Решение транспортной задачи
симплекс-методом»
Цель работы. Выработать у студентов практические навыки решения транспортных задач средствами пакета simplex.
Задание. На
три базы
,
,
поступил однородный груз в количестве:
т на базу
,
т на базу
,
т на базу
.
Полученный груз требуется перевезти в
пять пунктов:
т в пункт
,
т в пункт
,
т в пункт
,
т в пункт
,
т в пункт
так, чтобы общая стоимость перевозок
была минимальной. Стоимости перевозок
1 тонны груза (в денежных единицах) из
пунктов отправления (баз) в пункты
назначения указаны в таблице.
1.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
3.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14.
,
,
;
,
,
,
,
;
Базы |
Пункты назначения |
||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Пример выполнения лабораторной работы
Задача. В
двух пунктах отправления
и
находится соответственно 150 и 90 т
горючего. В пункты I,
II,
III
требуется доставить соответственно
60, 70 и 110 т горючего. Стоимости перевозки
тонны горючего из пункта
в пункты I,
II,
III
составляют соответственно 6, 10 и 4 ден.
ед., а из пункта
– 12, 2 и 8 ден. ед. Составить оптимальный
план перевозок горючего так, чтобы общая
сумма транспортных расходов была
наименьшей.
Решение. Пусть
– количество единиц груза, перевозимого
из
-го
склада
-му
потребителю. Зададим вектор
с координатами
:
>restart:X:=vector([x11,x12,x13,x21,x22,x23]);
На экране появится результат
Введем вектор
запасов, имеющихся на складах,
вектор
потребностей
и вектор
стоимостей перевозок:
>a:=vector([150,90]);b:=vector([60,70,110]);c:=vector([6,10,4,12,2,8]);
На экране появится результат
Общее количество груза на складах равно суммарной потребности, таким образом, задача является сбалансированной (закрытой). Этот факт мы установили, просуммировав элементы векторов и соответственно с помощью функции sum.
> n:=2: m:=3: sum('a[i]','i'=1..n); sum('b[j]','j'=1..m);
Выражение для целевой функции определим как скалярное произведение векторов и (это можно сделать с помощью функции multiply из пакета расширения linalg).
> Z:=linalg[multiply](X,c);
На экране появится результат
Составим систему
уравнений, задающую ограничительные
условия транспортной задачи. Для удобства
введем матрицу
с элементами
.
> A:=matrix(n,m,X);
На экране появится результат
Далее с помощью операторов цикла получим систему ограничений транспортной задачи.
> for i from 1 to n do S[i]:=0:for j from 1 to m do S[i]:=S[i]+A[i,j] od od:
> for j from 1 to m do S1[j]:=0:for i from 1 to n do S1[j]:=S1[j]+A[i,j] od od:
> Y:={seq(S[i]=a[i],i=1..n),seq(S1[j]=b[j],j=1..m)};
На экране появится результат
Определим план перевозок, для которого
целевая функция
при системе ограничений
принимает наименьшее значение, с помощью
функции minimize из пакета расширения
simplex. Результат вычислений обозначим
идентификатором var.
> var:=simplex[minimize](Z,Y,NONNEGATIVE);
На экране получим результат
Воспользуемся функцией assign, чтобы неизвестные системы простейших уравнений var получили свои значения:
> assign(var);
Теперь вычислим значение целевой функции для найденного плана:
> Z;
Таким образом, мы
получили оптимальный план перевозок
горючего, при котором общая сумма
транспортных расходов является наименьшей
и составляет
денежных единиц.