Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Решение оптимизационных задач в Maple_Рук Лаб Р...doc
Скачиваний:
7
Добавлен:
21.11.2019
Размер:
1.17 Mб
Скачать

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;

Таким образом, мы получили оптимальный план перевозок горючего, при котором общая сумма транспортных расходов является наименьшей и составляет денежных единиц.