- •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;
Таким образом, мы получили оптимальный план перевозок горючего, при котором общая сумма транспортных расходов является наименьшей и составляет денежных единиц.