рефератырефератырефератырефератырефератырефератырефератырефераты

рефераты, скачать реферат, современные рефераты, реферат на тему, рефераты бесплатно, банк рефератов, реферат культура, виды рефератов, бесплатные рефераты, экономический реферат

"САМЫЙ БОЛЬШОЙ БАНК РЕФЕРАТОВ"

Портал Рефератов

рефераты
рефераты
рефераты

Решение транспортной задачи в векторной постановке в среде Maple

Содержание

Введение

Глава 1. Задача транспортного типа

§1. Постановка транспортной задачи для n переменных

§2. Пример решения транспортной задачи

§3. Транспортные задачи по различным критериям

§4. Решение транспортной задачи в MS Excel

Глава 2: Maple для транспортной задачи

§1. Введение в Maple

§2. Управляющие структуры ветвления Maple языка (if предложение)

§3. Программа решения транспортной задачи

§4. Транспортная задача в векторных координатах (Для двух матриц)

§5. Транспортная задача в векторных координатах (Для трёх матриц)

Список литературы

Приложения

Введение

Под названием “транспортная задача” объединяется широкий круг задач с единой математической моделью. Классическая транспортная задача - задача о наиболее экономном плане перевозок однородного продукта или взаимозаменяемых продуктов из пунктов производства в пункты потребления, встречается чаще всего в практических приложениях линейного программирования. Линейное программирование является одним из разделов математического программирования - области математики, разрабатывающей теорию и численные методы решения многомерных экстремальных задач с ограничениями.

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

В зависимости от способа представления условий транспортной задачи она может быть представлена в сетевой (схематичной) или матричной (табличной) форме. Транспортная задача может также решаться с ограничениями и без ограничений.

Глава 1. Задача транспортного типа

§1. Постановка транспортной задачи для n переменных

Пусть имеется несколько поставщиков однородной продукции (каждый с определенным запасом) и несколько потребителей этой продукции (с известными потребностями у каждого). Задана также сеть коммуникаций (дорог, рек, воздушных линий и т.д.) связывающая каждого поставщика с каждым потребителем. На каждой коммуникации задана цена перевозки - стоимость перевозки единицы продукции. Если какая - либо коммуникация отсутствует, то считаем, что она есть, но цену перевозки на ней устанавливаем равной бесконечности (+?). Это соглашение сделает невыгодным перевозку по ней и автоматически исключит данную коммуникацию из плана перевозок.

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

Транспортные задачи бывают:

1) открытые m ? n (суммарный запас продукции, имеющейся у поставщиков, не совпадает с суммарной потребностью в продукции у потребителей.)

2) закрытые m = n (суммарный запас продукции, имеющейся у поставщиков, совпадает с суммарной потребностью в продукции у потребителей.)

Метод потенциалов «работает» только для закрытых ТЗ, причем, закрытая ТЗ всегда разрешима.

Открытую ТЗ сводят к закрытой ТЗ путем прибавления к суммарному запасу продукции или суммарной потребности продукции недостающих единиц до равенства суммарного запаса продукции и суммарной потребности продукции.

Закрытая транспортная задача формулируется как Задача Линейного Программирования (ЗЛП) следующего вида:

,

где

- запас i - го поставщика

- потребность j - го потребителя

- цена перевозки единицы продукции по коммуникациям (i, j)

(от i - го поставщика к j - му потребителю)

- объем перевозки продукции (неизвестный) по коммуникациям (i, j).

Для вывода критерии оптимальности транспортной задачи построим двойственную задачу.

Структура матрицы ограничений транспортной задачи такова, что столбец, соответствующей переменной содержит ровно два ненулевых элемента: единицу в строке с номером i и единицу в строке m + i.

Вектор двойственных переменных Y = (,…,,,…,) имеет m + n компонент (по числе ограничений ТЗ), которые называются потенциалами: переменные ,,…, - потенциалы поставщиков; переменные ,…,- потенциалы потребителей.

Используя схему для построения двойственной задачи к ЗЛП в стандартной форме, имеем:

В полученной двойственной задаче n·m ограничений, соответствующих каждой переменной ТЗ. Вспоминая, что невязка между левой и правой частью в ограничений двойственной задачи есть оценка для соответствующей переменной исходной задачи , запишем условия оптимальности текущего плана перевозок в ТЗ:

.

Неизвестные потенциалы и (их общее количество равно m + n) могут быть найдены (и именно так отыскиваются) из условия равенства нулю оценок для базисных переменных (заполненных клеток таблицы) ТЗ (таких равенств (m+n - 1), что следует из замечания ниже).

, для заполненных клеток (i, j) таблицы ТЗ.

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

Утверждение

Закрытая транспортная задача всегда разрешима.

Доказательство

Необходимо установить следующее:

а) ТЗ имеет хотя бы одно допустимое решение

б) Целевая функция ТЗ ограничена снизу

а) Проверим, что (M==) является допустимым решением закрытой ТЗ. Не отрицательность очевидна, т.к. >0, >0, М>0.

Подставим предъявленное решение в произвольное ограничение первой группы = = =M= и в ограничения второй группы = = =M=. Всем ограничениям ТЗ предъявленное решение удовлетворяет, и, следовательно, Является допустимым решением ТЗ.

б) Выберем - наименьшую цену перевозки. Заменим в целевой функции ТЗ все коэффициенты на . Тогда получим

.

Т.е. целевая функция ТЗ ограничена снизу константой .

§2. Пример решения транспортной задачи

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

ШАГ 1. Построение начального плана перевозок.

ШАГ 2. Проверка текущего плана на оптимальность.

Если план оптимален, то алгоритм завершен.

ШАГ 3. Улучшение плана перевозок. Переход к шагу 1.

Опишем алгоритм по шагам, иллюстрируя каждый шаг

ШАГ 1. Построение начального плана перевозок.

Построение начального решения (как и последующие расчеты) проводят в таблице, имеющей следующий вид:

60

100

80

120

5

10

12

70

8

6

4

50

0

0

0

Клетка (i,j) таблицы соответствует коммуникации, связывающей i-го поставщика с j-м потребителем.

Построить начальный план перевозок означает - назначить объемы перевозок в клетки таблицы таким образом, чтобы:

а)число заполненных клеток было (m+n-1). (Тогда план перевозок будет отвечать базисному решению ЗЛП);

б)сумма перевозок в любой строке должна быть равна запасу соответствующего поставщика, а сумма перевозок в каждом столбце равна потребности потребителя. (Условие выполнения ограничений ТЗ). Существует несколько способов нахождения начального решения, которые отличаются только выбором клетки, в которую назначается очередная перевозка. Так, в способе северо-западного угла (СЗУ) для очередного назначения перевозки выбирается левая верхняя клетка таблицы (при этом никак не учитываются цены перевозок). Наоборот, в способе минимальной стоимости (МС) для заполнения выбирается клетка текущей таблицы с минимальной ценой перевозки, что в большинстве случаев (но не всегда) приводит к более дешевому (а значит и более близкому к оптимальному) начальному плану перевозок.

Мы будем пользоваться способом минимальной стоимости (МС).

Изложим теперь алгоритм нахождения начального решения.

ШАГ 1. Определенным способом выбираем клетку в текущей таблице. Пусть она имеет индексы (i, j) (i -номер поставщика, j - номер потребителя).

ШАГ 2. В качестве перевозок в эту клетку назначаем наименьшую из ai и потребности bj.

xij = min{ ai, bj }

ШАГ З. Уменьшим запас ai и потребность bj на величину перевозки xij, т.е.

ai = ai - xij,

bj =bj -xij

ШАГ 4. При исчерпании запаса (ai = 0) запрещаем к перевозке оставшиеся свободные клетки i-ой строки, а при исчерпании потребности (bj =0) запрещаем такие же клетки вj-ом столбце.

В случае одновременного исчерпания запасов потребностей (ai =bj = 0) запрещаем перевозки или в строке (тогда считаем, что у потребителя осталась потребность в количестве равном нулю, которую необходимо удовлетворить), или в столбце (в этом случае считаем, что у поставщика остается запас равный нулю, который необходимо вывезти). Это делается для того, чтобы при одновременном запрещении перевозок в строке и столбце количество заполненных клеток таблицы не стало меньшим, чем m+n-1.

Получим новую текущую таблицу, в которую не входят заполненные и запрещенные клетки. Если таблица не пуста, переходим к шагу 1. (При исчерпании таблицы - конец).

Способ минимальной стоимости.

60

100

80

120

5

10

12

70

8

6

4

50

0

0

50

0

1.Клетки с минимальной ценой (3,1), (3,2) и (3,3). Выбираем, например, (3,2). (Далее все шаги, как в предыдущем способе).

2 . x32 = min{50,60} = 50

3. a '3 =50-50=0, b '2 = 100-50=50

4.Запрещаем строку 3.

60

100

80

120

5

10

12

70

8

6

4

70

50

0

0

50

0

1.Клетка с min ценой ~ (2,3)

2.x23 = min{70,80} = 70

3.a2=70-70=0, b'3 = 80-70=10

4.Запрещаем строку 2.

60

100

80

120

5

60

10

12

70

8

6

4

70

50

0

0

50

0

1.Клетка с min ценой ~ (1,1)

2. x 11=min{120,60} = 60

3.a 1' =120-60 = 60, b1' = 0

4.В первом столбце запрещать уже нечего. Текущая таблица содержит две клетки (1,2) и (1,3).

60

100

80

120

5

60

10

50

12

70

8

6

4

70

50

0

0

50

0

1.Выбираем клетку (1,2)

2.x 12 =min{110,100} = 100

3.a 1 =110-100 = 10, b'1 = 0

4.Текущая таблица содержит одну клетк((1,3).

60

100

80

120

5

60

10

50

12

10

70

8

6

4

70

50

0

0

50

0

1. Выбираем последнюю клетку(1,3)

2. x13=min{10,10} = 10

3. a1' = b3 = 0

4.Таблица исчерпана. Конец.

Переходим к описанию следующего шага метода потенциалов.

ШАГ 2. Проверка текущего плана на оптимальность.

Признаком того, что текущий план перевозок является оптимальным, служит условие

(1) ui +vj -cij ?0

которое выполняется для всех клеток таблицы. Неизвестные здесь величины ui и vj (называемые потенциалами) определяются из условий

(2 )ui + vj = cij

Условие (1) означает невозможность появления "спекулятивной" цены. Само же название "потенциалы" заимствовано из физического закона о том, что работа по перемещению заряда в электростатическом поле равна разности потенциалов в данных точках поля (У нас: "...цена перевозки единицы продукции по коммуникации равна разности цен в конце и в начале пути")

Так как заполненных клеток в таблице (m+n-1) штук, а неизвестных и (m+n) штук, то для их определения имеется система из (m+n-1) уравнений относительно (m+n) неизвестных. Чтобы найти решение (хотя бы какое-нибудь) такой системы, достаточно положить одно из неизвестных (произвольное) равным некоторому произвольно выбранному числу. Тогда остальные определяются единственным образом. Можно решать эту систему непосредственно (продолжаем работать с нашим "старым" примером и найдем потенциалы для начального плана, построенного способом МС).

Заполненные клетки Уравнения

(1,1) u1 + v1 =5

(1,2) u1 + v2 =10

(1,3) u1 + v3 =12

(2,3) u2 +v3 =4

(3,2) u3 +v2 =0

Положим, например, неизвестное u 1 равным 0 (через него можно из первых трех уравнений найти v1, v2 и v3). Последовательно из них находим u 2 , u 3.

Этот метод можно сформулировать в виде единой правилы:

Неизвестный потенциал находится вычитанием известного из цены перевозки в заполненной клетке

Применим это правило для определения u и v в нашем примере и получим:

u1 =0, u2 =-8, u3 =-6

v1 =5, v2 =10, v3 =12

Переходим к проверке условий оптимальности (1). Достаточно проверять их для незаполненных клеток, так как для клеток заполненных эти условия выполняются как равенства. Для проверки берется незаполненная клетка, складываются соответствующие ей потенциалы (первый элемент строки и последний элемент столбца) и из них вычитается цена перевозки в данной клетке. Если полученное число отрицательное (или ноль), то оптимальность в данной клетке не нарушается (в случае выполнения условия (1) для всех незаполненных клеток, имеем оптимальный план перевозок). Если же в таблице встретилась хотя бы одна клетка, для которой это число положительно, тогда решение не является оптимальным и может быть улучшено. Проверим на оптимальность имеющееся решение

(2,1) u2+v1-c21=-8+5-8=-11<0

(2,2) u 2 +v2 -c22=-8+10-6=-4<0

(3,1) u 3 +v1 -c31=-10+ 5-0=-5<0

(3,3) u 3 +v3 -c33=-10+12-0=2>0

Следовательно, условие оптимальности нарушено в клетке (3,3).

Имеющийся план перевозок можно улучшить.

Дадим описание заключительного шага алгоритма метода потенциалов.

ШАГ 3 Улучшение плана перевозок.

Улучшение плана происходит путем назначения перевозки и>0 в ту клетку (i , j) таблицы, в которой нарушилось условие оптимальности. Но назначение ненулевой перевозки нарушает условия баланса вывоза продукции от поставщика i (вывозит весь запас и еще плюси>0 ) и условия баланса привоза продукции к потребителю j (получает все что можно и еще плюс и > 0). Условия баланса восстанавливают путем уменьшения вывоза от i-поставщика к какому-то другому потребителю j (уменьшают на и перевозку в какой-то заполненной клетке (i , j) строки i). При этом нарушается баланс привоза продукции к потребителю j (получает на и меньше, чем ему требуется). Восстанавливают баланс в столбце j, тогда он нарушается в некоторой строке i и т.д. до тех пор, пока цикл перемещения перевозок не замкнется на клетке, в которой нарушалось условие оптимальности. Продемонстрируем эти рассуждения на нашем примере.

60

100

80

120

5

60

10

50

12

10

70

8

6

4

70

50

0

0

50

0

60

100

80

120

5

60

10

50+и

12

10-и

70

8

6

4

70

50

0

0

50-и

0

60

100

80

120

5

60

10

60

12

0

70

8

6

4

70

50

0

0

40

0

10

1. Оптимальность нарушена в клетке (3,3). Назначим в нее перевозку и>0 (+и означает, увеличение на и).

2.Нарушается баланс вывоза от поставщика 3 (вывозит 50+ и, а это больше его запаса!). Уменьшаем на и перевозку в заполненной клетке строки 3 (вне заполненной уменьшать нельзя, так как это приведет к отрицательной перевозке).

Рассмотрим те клетки цикла в которых уменьшаем на и перевозку и берём минимум из вычитаемых, у нас это min{10- и ,50- и }=10.

И данное число надо подставить в цикл

§3. Транспортные задачи по различным критериям

В экономике предприятия, обычно при составлении экономико-математической модели задачи транспортного типа приходиться вводить ряд дополнительных ограничений, а затем пользоваться методом потенциалов.

Ряд экономических задач легко сводимы к транспортной задаче.

· Усложненные задачи транспортного типа

1. Отдельные поставки от определенных поставщиков некоторым потребителям должны быть исключены (из-за отсутствия необходимых условий хранения, чрезмерной перезагрузки коммуникаций и т.д.). Это ограничение требует, чтобы в матрице перевозок, содержащей оптимальный план, определенные клетки оставались свободными. Последнее достигается искусственным завышением затрат на перевозки сij в клетках, перевозки через которые следует запретить. При этом производят завышение величины сij до таких значений, которые будут заведомо больше всех и с которыми их придется сравнивать в процессе решения задачи.

2. На предприятии необходимо определить минимальные суммарные затраты на производство и транспортировку продукции. С подобной задачей сталкиваются при решении вопросов, связанных с оптимальным размещением производственных объектов. Здесь может оказаться экономически более выгодным доставлять сыре из более отдаленных пунктов, но зато при меньшей его себестоимости. В таких задачах за критерий оптимальности принимают сумму затрат на производство и транспортировку продукций.

3. Ряд транспортных маршрутов, по которым необходимо доставить грузы, имеют ограничения по пропускной способности. Если, например, по маршруту Ai Bj можно провести не более q единиц груза, то Bj-й столбец матрицы разбивается равным разности B1j и B2j. В первом столбце спрос принимается равным разности между действительным спросом bj и ограничением q: b1j= bj-q, во втором - равным ограничению q т.е. b2j=q. Затраты сij в обоих столбцах одинаковы и равны данным, но в первом столбце B1j, в клетке соответствующей ограничению i, вместо истинного тарифа сij ставится искусственно завышенный тариф M (клетка блокируется). Затем задача решается обычным способом.

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

· Транспортная задача по критерию времени

Иногда возникает ситуация, когда в условиях (ТЗ) необходимо минимизировать не стоимость перевозок, а время их выполнения (Срочные грузы, перевозки скоропортящихся продуктов, работа «скорой помощи» и т.д.)

Имеется m поставщиков однородного груза и n потребителей груза. Для каждой пары (,) известно время , за которое груз перевозится от к . Требуется составить такой план перевозок, при котором все запасы поставщиков будут вывезены, а все запросы потребителей будут полностью удовлетворенны и наибольшее время доставки всех грузов будет минимизирован.

· Задача о назначениях (Венгерский метод)

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

§4. Решение транспортной задачи в MS Excel

В качестве примера я рассмотрел транспортную задачу для 3 складов и 5 магазинов.

· В ячейки C5:C7 записал объемы продукции, имеющиеся на 3 складах.

· В ячейки E5:I5 - заявки на продукцию, поступившие от магазинов.

· В ячейки B10:F12 - матрицу транспортных расходов, задающую расходы на перевозку из I-го склада в J-й магазин единицы продукции.

· В ячейки B15:F17 - план перевозок - матрицу, задающую количество товара, перевезенного из I-го склада в J-й магазин. Начальное распределение плана задано по принципу "каждой сестре по серьге", равномерно распределив всю имеющуюся на складе продукцию по магазинам. Эти ячейки являются регулируемыми и Решатель должен найти более подходящее решение, изменив значения в этих ячейках.

· В ячейку D19 - записал целевую функцию:

{ =СУММПРОИЗВ(B10:F12;B15:F17) }

· В ячейки D21:H21 записал ограничения, задающие требование о точном выполнении заявки каждого магазина. Как обычно, я записал соответствующую формулу в первую из этих ячеек:

{ =СУММ(B15:B18) }

Затем скопировал ее. При копировании формула автоматически меняется, задавая нужное ограничение. Правда, нужно следить при этом за правильной ориентацией данных. Например, в данном случае формулу нужно копировать в строку, а не в столбец.

· Затем задал следующую группу ограничений. Эти ограничения отвечают тому естественному условию, что со склада нельзя увести больше продукции, чем там имеется. Формула, помещенная в ячейку D22, имеет вид:

{ СУММ(B15:F15)}

Эта формула скопировать уже по столбцу D.

Подготовительный этап завершен - можно вызывать Решатель.

Для решения транспортной задачи воспользуемся процедурой Поиск решения, которая находится в меню Сервис.

После выбора данной команды появится диалоговое окно.

Поскольку в качестве критерия оптимизации нами выбрана минимизация цены на грузоперевозки, в поле Установить целевую ячейку введите ссылку на ячейку, содержащую формулу расчета общей цены грузоперевозки. В нашем случае это ячейка $D$19. Чтобы минимизировать значение конечной ячейки путем изменения значений влияющих ячеек (влияющими, в данном случае это и изменяемые ячейки, являются ячейки, которые предназначены для хранения значений искомых неизвестных), переключатель установите в положение минимальному значению;

В поле Изменяя ячейки введите ссылки на изменяемые ячейки, разделяя их запятыми; либо, если ячейки находятся рядом, указывая первую и последнюю ячейку, разделяя их двоеточием ($B$15:$F$17). Это означает, что для достижения минимальноq цены груз - перевозок будут меняться значения в ячейках B15 по F17, то есть будут изменяться количество груза, перевезенного по конкретному маршруту.

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

В группе полей Ограничения нажмите кнопку Добавить. Появится диалог Добавление ограничения.

Следует ввести левую часть ограничения в левое поле, выбрать знак условия, накладываемого на значение и ввести правую часть ограничения. Как и в других случаях, можно не вводить ссылки на ячейки, а выделить мышью эти ячейки. После ввода одного ограничения следует нажать кнопку Добавить и ввести следующее. По окончании ввода всех ограничений нажмите на кнопку ОК. В диалоге появятся строки введенных ограничений.

Для изменения и удаления ограничений в списке Ограничения диалогового окна Поиск решения укажите ограничение, которое требуется изменить или удалить. Выберите команду Изменить и внесите изменения либо нажмите кнопку Удалить.

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

Первое условие $С$4:$F$8>=0. Оно означает, что объем перевозок не может быть отрицательным, то есть, если на складе не хватает минеральных удобрений, их не везут с пункта доставки, на который эти минеральные удобрения были завезены ранее. Грузопоток имеет только одно направление - от складов к пунктам доставки удобрений.

Второе условие $D$21:$H$21 >=$E$5:$I$5.

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

И. наконец, третье, и последнее условие $D$22:$D$24<=$C$5:$C$7.

Оно означает, что значение в ячейке C5 должно быть меньше или равно значению в D22 т.д. В ячейках с D22 по D24 на листе находятся объемы поставок с конкретных складов. В ячейках с C5 по C7 - запасы на этих же складах. Так как невозможно вывести со склада больше, чем на нем есть, первое значение должно быть не больше второго.

Введенные условия должны позволить найти наиболее оптимальный вариант решения задачи.. Нажмите кнопку Выполнить для подбора решения.

После нахождения решения появляется диалог Результаты поиска решения

Глава 2. Maple для транспортной задачи

§1. Введение в Maple

Системы компьютерной алгебры (СКА) находят все более широкое применение во многих областях науки таких как: математика, физика, химия, информатика и т.д., техники, технологии, образовании и т.д. СКА типа Maple, Mathematica, MuPAD, Macsyma, Axiom, Reduce и Magma становятся все более популярны, и для решения задач преподавания математически ориентированных дисциплин, в научных исследованиях и промышленности. Данные системы являются мощными инструмента и для ученых, инженеров и педагогов. Исследования на основе СКА технологии, как правило, сочетают алгебраические методы с продвинутыми вычислительными методами. В это смысле СКА - междисциплинарная область между математикой и информатикой, в которой исследования сосредотачиваются как на разработке алгоритмов для символьных (алгебраических) вычислений и обработки на компьютерах, так и на создании языков программирования и программной среды для реализации подобных алгоритмов и базирующихся на них задач различного назначения.

Исследователи используют пакет Maple как важный инструмент при решении задач, связанных с их исследованиями. Пакет идеален (по нынешним понятиям) для формулировки, решения и исследования различных аналитических моделей. Его алгебраические средства существенно расширяют диапазон проблем, которые могут быть решены на качественно уровне.

Пакет Maple способен решать большое число, прежде всего, математически ориентированных задач вообще без программирования в общепринято смысле. Вполне можно ограничиться лишь описание алгоритма решения своей задачи, разбитого на отдельные последовательные этапы, для которых Maple имеет уже готовые решения. При этом, пакет Maple располагает большим набором процедур и функций, непосредственно решающих совсем не тривиальные задачи как то интегрирование, дифференциальные уравнения и др. О многочисленных приложениях Maple в виде пакетов и говорить не приходится. Тем не менее, это вовсе не означает, что Maple не предполагает программирования. И имея собственный достаточно развитый язык программирования (в дальнейшем Maple язык), пакет позволяет программировать в своей среде самые разнообразные задачи из различных приложений.

Программирование в среде Maple языка в большинстве случаев не требует, какого то особого программистского навыка (хотя его наличие и весьма нелишне), т.к. в отличие от других языков универсального назначения и многих проблем, но ориентированных Maple язык включает большое число математически ориентированных функций и процедур, позволяя только одним вызовом решать достаточно сложные самостоятельные задачи, например: решать системы дифференциальных или алгебраических уравнений, находить минимакс выражения, вычислять производные и интегралы, выводить графики сложных функций и т.д. Интерактивность языка обеспечивает простоту его освоения и удобство редактирования и отладки, прикладных Maple документов и программ. Реальная же мощь Maple языка обеспечивается не только его управляющими и структурами и структурами данных, но и все богатство его функциональных (встроенных, библиотечных, модульных) и прикладных (Maple документов) средств, созданных к настоящему времени пользователя и из различных прикладных областей, прежде всего, математических. Важнейшим преимущество Maple является открытость его архитектуры, что позволило в кратчайшие сроки создать широки кругом пользователей из многих областей науки, образования, техники и т.д. обширных наборов процедур и модулей, которые значительно расширили как его возможности, так и сферу приложений. К их числу можно с полны основание отнести и представленную в библиотеку, содержащую более 700 средств, дополняющих средства пакета, устраняющих ряд его недоработок, расширяющих ряд его стандартных средств и повышающих уровень совместности релизов пакета.

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

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

§2. Управляющие структуры ветвления Maple языка (if предложение)

Достаточно сложные алгоритмы вычислений, обработки информации и/или управляющие (в первую очередь) не могут обойтись сугубо последовательной схемой, а включают различные конструкции, изменяющие последовательный порядок выполнения алгоритма в зависимости от наступления тех или иных условий: циклы, ветвления, условные и безусловные переходы (такие конструкции иногда называются управляющими). Для организации управляющих конструкций ветвящегося типа Maple язык располагает довольно эффективным средством, обеспечиваемые if предложением и имеющие следующие три формата кодирования:

(1)if <ЛУ >then <ПП >end if ;

(2)if <ЛУ >then <ПП1 >else <ПП2 >end if ;

(3)if <ЛУ1 >then <ПП1 >elif <ЛУ2 >then <ПП2 >else <ПП3 >end if ;

В качестве логического условия (ЛУ ) всех четырех форматов if предложения выступает любое допустимое булевское выражение, образованное на основе операторов отношения >=, логических операторов {and, or, not} и логических констант {true,false,FAIL}, и возвращающее логическое true значение. Последовательность предложений (ПП) представляет собой управляющую структуру типа следования, предложения которой завершаются : разделителе; для последнего предложения ПП кодирование разделителя необязательно. Во всех форматах, кроме последнего, ключевая фраза `end if` определяет закрывающую скобку (конец) if предложения и его отсутствие идентифицирует синтаксическую ошибку, вид которой определяется контексто if предложения. Каждому if слову должна строго со ответствовать своя скобка `end if`.

Первый формат if предложения несет следующую смысловую нагрузку: если результат вычисления ЛУ возвращает true значение, то выполняется указанная за ключевым then слово ПП, в противно случае выполняется следующее за if предложение, т.е. if предложение эквивалентно пустому предложению. При этом если if предложение завершается (;) разделителе, то выводятся результаты вычисления всех предложений образующих ПП, независимо от типа завершающего их ; разделителя. Следовательно, во избежание вывода и возврата излишней промежуточной информации, завершать if предложение рекомендуется (:) разделителе.

Второй формат if предложения несет следующую смысловую нагрузку: если результат вычисления ЛУ возвращает true значение, то выполняется указанная за ключевым then слово ПП1, в противно случае выполняется следующая за ключевым else слова ПП2. Замечание относительно вывода промежуточных результатов для случая первого формата if предложения сохраняет силу и для второго формата кодирования.

Третий формат if предложения несет смысловую нагрузку, легко усматриваемую из следующей общей R функции, поясняющей принцип выбора выполняемой ПП в зависимости от цепочки истинности предшествующих ей ЛУ j (j =1 ..k) в предложении.

§3. Программа решения транспортной задачи

Программа для решения транспортной задачи выполнена в среде математического пакета Maple.

После подключения библиотеки командой with(simplex) пользователю становится доступны функции и опции, указанные в следующей таблице 1 приложения.

Алгоритм программы решения транспортной задачи:

1. вводим первоначальные данные задачи

2. описываем все переменные

3. подключение библиотеки simplex

4. находим оптимальный план перевозок

5. находим минимальное значение функции

§4. Транспортная задача в векторных координатах (Для двух матриц)

Постановка задачи

Дальнейшим развитием темы является транспортная задача в векторной постановке. Пусть имеется несколько поставщиков однородной продукции (каждый с определенным запасом) и несколько потребителей этой продукции (с известными потребностями у каждого). Задана коммуникационная сеть (дороги, реки, воздушные линий и т.д.) связывающая каждого поставщика с каждым потребителем. На каждом пути определена стоимость перевозки единицы продукции и время перевозки. Это означает, что заданы две матрицы одинокого формата, т.е. число строк и число столбцов у матриц совпадает. На содержательном уровне требуется найти оптимальное управление, что одновременно минимизирует стоимость и время перевозки.

Алгоритм решения

1. Решить первую транспортную задачу, найдя цену перевозки и план перевозки.

2. Решить вторую транспортную задачу (с другими ценами), найдя цену перевозки и план перевозки.

3. Составляем матрицу M=, где f1x - это план перевозки первой задачи, поставленный в функцию цели первой задачи; f2x - это план перевозки первой задачи поставленный, в функцию цели второй задачи; f1y - это план перевозки второй задачи, поставленный в функцию цели первой задачи; f2y - это план перевозки второй задачи, поставленный в функцию цели второй задачи.

4. Матрицу M транспонируем. Полученную матрицу обозначаем A.

5. Находим собственные значения и собственные векторы матрицы А.

6. Берем один из столбцов матрицы собственных векторов, в зависимости конечно от собственных значений (если собственное значение равное единице стоит первым, то берем первый столбец, иначе второй ) и нормируем этот столбец.

7. Первую координату нормированного вектора умножаем на первую матрицу цен и складываем с второй матрицей цен умноженное на вторую координату полученного нормированного вектора. Получили новую матрицу цен.

8. Решаем новую транспортную задачу с таким же объемом поставок и потребностей, но с новыми ценами, полученными в пункте 7.

9. Новый план перевозок ставим в функцию цели первой и второй транспортной задачи и таким образом получаем УПРАВЛЕНИЯ. На содержательном уровне нашли оптимальное управление, что одновременно минимизирует стоимость и время перевозки.

Блок-схема

§5. Транспортная задача в векторных координатах (Для трёх матриц)

Постановка задачи

Пусть имеется несколько поставщиков однородной продукции (каждый с определенным запасом) и несколько потребителей этой продукции (с известными потребностями у каждого). Задана коммуникационная сеть (дороги, реки, воздушные линий и т.д.) связывающая каждого поставщика с каждым потребителем. Но в данном случае на каждом пути определена стоимость перевозки единицы продукции, время и функция обратная функции качества перевозки. Это означает, что заданы три матрицы одинокого формата, т.е. число строк и число столбцов у матриц совпадает. На содержательном уровне требуется найти оптимальное управление, что одновременно минимизирует стоимость, время и обратная функция качества перевозки.

Алгоритм решения

1. Решить первую транспортную задачу, найдя цену перевозки и план перевозки.

2. Решить вторую транспортную задачу (с другими ценами), найдя цену перевозки и план перевозки.

3. Решить третью транспортную задачу (с другими ценами), найдя цену перевозки и план перевозки.

4. Составляем матрицу M=,

5. где f1x - это план перевозки первой задачи, поставленный в функцию цели первой задачи; f2x - это план перевозки первой задачи поставленный, в функцию цели второй задачи; f3x - это план перевозки первой задачи поставленный, в функцию цели третьей задачи; f1y - это план перевозки второй задачи, поставленный в функцию цели первой задачи; f2y - это план перевозки второй задачи, поставленный в функцию цели второй задачи; f3y - это план перевозки второй задачи, поставленный в функцию цели третьей задачи; f1v - это план перевозки третьей задачи, поставленный в функцию цели первой задачи; f2v - это план перевозки третьей задачи, поставленный в функцию цели второй задачи; f3v - это план перевозки третьей задачи, поставленный в функцию цели третьей задачи.

6. Матрицу M транспонируем. Полученную матрицу обозначаем A.

7. Находим собственные значения и собственные векторы матрицы А.

8. Берем один из столбцов матрицы собственных векторов, в зависимости конечно от собственных значений (если собственное значение равное единице стоит первым, то берем первый столбец, иначе второй, а если и не второй, то третий) и нормируем этот столбец.

9. Первую координату нормированного вектора умножаем на первую матрицу цен и складываем с второй матрицей цен умноженное на вторую координату полученного нормированного вектора и ко всему этому прибавляем третью матрицу цен умноженное на третью координату нормированного вектора. Получили новую матрицу цен.

10. Решаем новую транспортную задачу с таким же объемом поставок и потребностей, но с новыми ценами, полученными в пункте 8.

11. Новый план перевозок ставим в функцию цели первой, второй и третьей транспортной задачи и таким образом получаем УПРАВЛЕНИЯ. На содержательном уровне требуется найти оптимальное управление, что одновременно минимизирует стоимость, время и обратная функция качества перевозки.

Блок-схема

Список литературы

1. Акулич И.Л. Математическое программирование в примерах и задачах. М.: Высшая школа, 1993.

2. Аладьев В.З., Богдявичюс М.А. MAPLE 6: Решение математических, статистических и физико-технических задач - М.: Лаборатория Базовых Знаний, 2001.

3. Бережная Е.В., Бережной В.И. математические методы моделирования экономических систем. М.: Мир, 1977.

4. Воробьёв Н.Н. Основы теории игр. Бескоалиционные игры. М.: Наука, 1984.

5. Канторович Л.В. Математические методы в организации и планировании производства. Ленинград: Изд. - во ЛГУ, 1939.

6. Карлин С. Математические методы в теории игр программировании и экономике. М: Мир, 1964.

7. Матвеев В.А. Уточнённое по конусу решение многокритериальной задачи. // Вестник НовГУ. Серия : Технические науки. 2006. № 39. C .23 - 27.

8. Петросян Л.А., Зенкевич Н.А., Семина Е.А. Теория игр. М.:ВШ, Книжный дом Университет, 1998.

Приложение 1

Листинг программы решения транспортной задачи

> restart:

> a1:=[1,2,3,4,5,6,7,8,9,10]; a2:=[11,12,13,14,15,16,17,18,19,20]; a3:=[21,22,23,24,25,26,27,28,29,30]; a4:=[31,32,33,34,35,36,37,38,39,40]; a5:=[41,42,43,44,45,46,47,48,49,50]; a6:=[51,52,53,54,55,56,57,58,59,60]; a7:=[61,62,63,64,65,66,67,68,69,70]; a8:=[71,72,73,74,75,76,77,78,79,80]; a9:=[81,82,83,84,85,86,87,88,89,90]; a10:=[91,92,93,94,95,96,97,98,99,100]; b:=[25,30,35,40,45,50,55,60,65,70]; c:=[50,45,40,35,30,25,55,60,65,70];

(вводим первоначальные данные задачи)

a1 := [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

a2 := [11, 12, 13, 14, 15, 16, 17, 18, 19, 20]

a3 := [21, 22, 23, 24, 25, 26, 27, 28, 29, 30]

a4 := [31, 32, 33, 34, 35, 36, 37, 38, 39, 40]

a5 := [41, 42, 43, 44, 45, 46, 47, 48, 49, 50]

a6 := [51, 52, 53, 54, 55, 56, 57, 58, 59, 60]

a7 := [61, 62, 63, 64, 65, 66, 67, 68, 69, 70]

a8 := [71, 72, 73, 74, 75, 76, 77, 78, 79, 80]

a9 := [81, 82, 83, 84, 85, 86, 87, 88, 89, 90]

a10 := [91, 92, 93, 94, 95, 96, 97, 98, 99, 100]

b := [25, 30, 35, 40, 45, 50, 55, 60, 65, 70]

c := [50, 45, 40, 35, 30, 25, 55, 60, 65, 70]

> proc(a1,a2,a3,a4,a5,a6,a7,a8,a9,a10,b,c) (означает начало процедуры)

>f,x11,x12,x13,x14,x15,x16,x17,x18,x19,x110,x21,x22,x23,x24,x25,x26,x27,x28,x29,x210,x31,x32,x33,x34,x35,x36,x37,x38,x39,x310,x41,x42,x43,x44,x45,x46,x47,x48,x49,x410,x51,x52,x53,x54,x55,x56,x57,x58,x59,x510, x61,x62,x63,x64,x65,x66,x67,x68,x69,x610, x71,x72,x73,x74,x75,x76,x77,x78,x79,x710, x81,x82,x83,x84,x85,x86,x87,x88,x89,x810, x91,x92,x93,x94,x95,x96,x97,x98,x99,x910, x101,x102,x103,x104,x105,x106,x107,x108,x109,x1010; (описываем все переменные)

Warning, premature end of input

> with(simplex): (подключение библиотеки simplex)

Warning, the protected names maximize and minimize have been redefined and unprotected

>minimize(a1[1]*x11+a1[2]*x12+a1[3]*x13+a1[4]*x14+a1[5]*x15+a1[6]*x16+a1[7]*x17+a1[8]*x18+a1[9]*x19+a1[10]*x110+ a2[1]*x21+a2[2]*x22+a2[3]*x23+a2[4]*x24+a2[5]*x25+a2[6]*x26+a2[7]*x27+a2[8]*x28+a2[9]*x29+a2[10]*x210+ a3[1]*x31+a3[2]*x32+a3[3]*x33+a3[4]*x34+a3[5]*x35+a3[6]*x36+a3[7]*x37+a3[8]*x38+a3[9]*x39+a3[10]*x310+ a4[1]*x41+a4[2]*x42+a4[3]*x43+a4[4]*x44+a4[5]*x45+a4[6]*x46+a4[7]*x47+a4[8]*x48+a4[9]*x49+a4[10]*x410+ a5[1]*x51+a5[2]*x52+a5[3]*x53+a5[4]*x54+a5[5]*x55+a5[6]*x56+a5[7]*x57+a5[8]*x58+a5[9]*x59+a5[10]*x510+ a6[1]*x61+a6[2]*x62+a6[3]*x63+a6[4]*x64+a6[5]*x65+a6[6]*x66+a6[7]*x67+a6[8]*x68+a6[9]*x69+a6[10]*x610+ a7[1]*x71+a7[2]*x72+a7[3]*x73+a7[4]*x74+a7[5]*x75+a7[6]*x76+a7[7]*x77+a7[8]*x78+a7[9]*x79+a7[10]*x710+ a8[1]*x81+a8[2]*x82+a8[3]*x83+a8[4]*x84+a8[5]*x85+a8[6]*x86+a8[7]*x87+a8[8]*x88+a8[9]*x89+a8[10]*x810+ a9[1]*x91+a9[2]*x92+a9[3]*x93+a9[4]*x94+a9[5]*x95+a9[6]*x96+a9[7]*x97+a9[8]*x98+a9[9]*x99+a9[10]*x910+ a10[1]*x101+a10[2]*x102+a10[3]*x103+a10[4]*x104+a10[5]*x105+a10[6]*x106+a10[7]*x107+a10[8]*x108+a10[9]*x109+a10[10]*x1010,{x11+x12+x13+x14+x15+x16+x17+x18+x19+x110=b[1], x21+x22+x23+x24+x25+x26+x27+x28+x29+x210=b[2], x31+x32+x33+x34+x35+x36+x37+x38+x39+x310=b[3], x41+x42+x43+x44+x45+x46+x47+x48+x49+x410=b[4], x51+x52+x53+x54+x55+x56+x57+x58+x59+x510=b[5], x61+x62+x6+x64+x65+x66+x67+x68+x69+x610=b[6], x71+x72+x73+x74+x75+x76+x77+x78+x79+x710=b[7], x81+x82+x83+x84+x85+x86+x87+x88+x89+x810=b[8], x91+x92+x93+x94+x95+x96+x97+x98+x99+x910=b[9], x101+x102+x103+x104+x105+x106+x107+x108+x109+x1010=b[10], x11+x21+x31+x41+x51+x61+x71+x81+x91+x101=c[1], x12+x22+x32+x42+x52+x62+x72+x82+x92+x102=c[2], x13+x23+x33+x43+x53+x63+x73+x83+x93+x103=c[3], x14+x24+x34+x44+x54+x64+x74+x84+x94+x104=c[4], x15+x25+x35+x45+x55+x65+x75+x85+x95+x105=c[5], x16+x26+x36+x46+x56+x66+x76+x86+x96+x106=c[6], x17+x27+x37+x47+x57+x67+x77+x87+x97+x107=c[7], x18+x28+x38+x48+x58+x68+x78+x88+x98+x108=c[8], x19+x29+x39+x49+x59+x69+x79+x89+x99+x109=c[9], x110+x210+x310+x410+x510+x610+x710+x810+x910+x1010=c[10]}, NONNEGATIVE); (находим оптимальный план перевозок)

{x52 = 0, x53 = 0, x54 = 0, x55 = 0, x56 = 0, x57 = 0, x58 = 0, x59 = 0, x61 = 0, x62 = 0, x64 = 0, x65 = 0, x51 = 0, x41 = 0, x42 = 0, x43 = 0, x44 = 0, x45 = 0, x46 = 0, x47 = 0, x49 = 0, x36 = 0, x96 = 0, x97 = 0, x98 = 0, x99 = 0, x410 = 0, x34 = 0, x35 = 0, x37 = 0, x38 = 0, x39 = 0, x95 = 0, x78 = 0, x79 = 0, x81 = 0, x82 = 0, x83 = 0, x87 = 0, x88 = 0, x89 = 0, x91 = 0, x31 = 0, x11 = 0, x66 = 0, x71 = 0, x72 = 0, x73 = 0, x74 = 0, x75 = 0, x18 = 0, x21 = 0, x22 = 0, x23 = 0, x24 = 0, x25 = 0, x26 = 0, x27 = 0, x28 = 0, x12 = 0, x13 = 0, x14 = 0, x15 = 0, x16 = 0, x17 = 0, x92 = 15, x102 = 20, x48 = 40, x101 = 50, x69 = 10, x94 = 10, x84 = 25, x76 = 20, x77 = 35, x67 = 20, x85 = 30, x93 = 40, x29 = 30, x310 = 25, x32 = 10, x68 = 20, x105 = 0, x106 = 0, x107 = 0, x108 = 0, x109 = 0, x1010 = 0, x6 = 0, x33 = 0, x110 = 0, x210 = 0, x710 = 0, x810 = 0, x910 = 0, x610 = 0, x103 = 0, x104 = 0, x63 = 0, x510 = 45, x19 = 25, x86 = 5}

> assign(%); (присваивает переменные к функции)

>f:=a1[1]*x11+a1[2]*x12+a1[3]*x13+a1[4]*x14+a1[5]*x15+a1[6]*x16+a1[7]*x17+a1[8]*x18+a1[9]*x19+a1[10]*x110+ a2[1]*x21+a2[2]*x22+a2[3]*x23+a2[4]*x24+a2[5]*x25+a2[6]*x26+a2[7]*x27+a2[8]*x28+a2[9]*x29+a2[10]*x210+ a3[1]*x31+a3[2]*x32+a3[3]*x33+a3[4]*x34+a3[5]*x35+a3[6]*x36+a3[7]*x37+a3[8]*x38+a3[9]*x39+a3[10]*x310+ a4[1]*x41+a4[2]*x42+a4[3]*x43+a4[4]*x44+a4[5]*x45+a4[6]*x46+a4[7]*x47+a4[8]*x48+a4[9]*x49+a4[10]*x410+ a5[1]*x51+a5[2]*x52+a5[3]*x53+a5[4]*x54+a5[5]*x55+a5[6]*x56+a5[7]*x57+a5[8]*x58+a5[9]*x59+a5[10]*x510+ a6[1]*x61+a6[2]*x62+a6[3]*x63+a6[4]*x64+a6[5]*x65+a6[6]*x66+a6[7]*x67+a6[8]*x68+a6[9]*x69+a6[10]*x610+ a7[1]*x71+a7[2]*x72+a7[3]*x73+a7[4]*x74+a7[5]*x75+a7[6]*x76+a7[7]*x77+a7[8]*x78+a7[9]*x79+a7[10]*x710+ a8[1]*x81+a8[2]*x82+a8[3]*x83+a8[4]*x84+a8[5]*x85+a8[6]*x86+a8[7]*x87+a8[8]*x88+a8[9]*x89+a8[10]*x810+ a9[1]*x91+a9[2]*x92+a9[3]*x93+a9[4]*x94+a9[5]*x95+a9[6]*x96+a9[7]*x97+a9[8]*x98+a9[9]*x99+a9[10]*x910+ a10[1]*x101+a10[2]*x102+a10[3]*x103+a10[4]*x104+a10[5]*x105+a10[6]*x106+a10[7]*x107+a10[8]*x108+a10[9]*x109+a10[10]*x1010;

(нашли минимальное значение функции)

f := 28350

>[x11,x12,x13,x14,x15,x16,x17,x18,x19,x110];[x21,x22,x23,x24,x25,x26,x27,x28,x29,x210];[x31,x32,x33,x34,x35,x36,x37,x38,x39,x310];[x41,x42,x43,x44,x45,x46,x47,x48,x49,x410];[x51,x52,x53,x54,x55,x56,x57,x58,x59,x510]; [x61,x62,x63,x64,x65,x66,x67,x68,x69,x610]; [x71,x72,x73,x74,x75,x76,x77,x78,x79,x710]; [x81,x82,x83,x84,x85,x86,x87,x88,x89,x810]; [x91,x92,x93,x94,x95,x96,x97,x98,x99,x910]; [x101,x102,x103,x104,x105,x106,x107,x108,x109,x1010];f;

[0, 0, 0, 0, 0, 0, 0, 0, 25, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 30, 0]

[0, 10, 0, 0, 0, 0, 0, 0, 0, 25]

[0, 0, 0, 0, 0, 0, 0, 40, 0, 0]

[0, 0, 0, 0, 0, 0, 0, 0, 0, 45]

[0, 0, 0, 0, 0, 0, 20, 20, 10, 0]

[0, 0, 0, 0, 0, 20, 35, 0, 0, 0]

[0, 0, 0, 25, 30, 5, 0, 0, 0, 0]

[0, 15, 40, 10, 0, 0, 0, 0, 0, 0]

[50, 20, 0, 0, 0, 0, 0, 0, 0, 0]

28350

Приложение 2

Листинг программы решения транспортной задачи в векторных координатах (Для двух матриц)

> restart:

> b:=[50,18,12,80,15,15];

b := [50, 18, 12, 80, 15, 15]

> c:=[14,20,22,24,50,60];

c := [14, 20, 22, 24, 50, 60]

(Решить первую транспортную задачу, найдя цену перевозки и план перевозки)

>X:=Matrix(6,6,[[3,8,9,1,9,0],[3,4,5,0,9,6],[2,7,6,0,9,0],[9,1,9,4,7,2],[2,4,5,6,4,1],[1,4,5,7,8,7]]);

X := Matrix(6,6,{(1, 1) = 3, (1, 2) = 8, (1, 3) = 9, (1, 4) = 1, (1, 5) = 9, (2, 1) = 3, (2, 2) = 4, (2, 3) = 5, (2, 5) = 9, (2, 6) = 6, (3, 1) = 2, (3, 2) = 7, (3, 3) = 6, (3, 5) = 9, (4, 1) = 9, (4, 2) = 1, (4, 3) = 9, (4, 4) = 4, (4, 5) = 7, (4, 6) = 2, (5, 1) = 2, (5, 2) = 4, (5, 3) = 5, (5, 4) = 6, (5, 5) = 4, (5, 6) = 1, (6, 1) = 1, (6, 2) = 4, (6, 3) = 5, (6, 4) = 7, (6, 5) = 8, (6, 6) = 7},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> proc(X,b,c)

>f1x,x11,x12,x13,x14,x15,x16,x21,x22,x23,x24,x25,x26,x31,x32,x33,x34,x35,x36,x41,x42,x43,x44,x45,x46,x51,x52,x53,x54,x55,x56,x61,x62,x63,x64,x65,x66;

Warning, premature end of input

> with(simplex):

Warning, the protected names maximize and minimize have been redefined and unprotected

>minimize(X[1,1]*x11+X[1,2]*x12+X[1,3]*x13+X[1,4]*x14+X[1,5]*x15+X[1,6]*x16+X[2,1]*x21+X[2,2]*x22+X[2,3]*x23+X[2,4]*x24+X[2,5]*x25+X[2,6]*x26+X[3,1]*x31+X[3,2]*x32+X[3,3]*x33+X[3,4]*x34+X[3,5]*x35+X[3,6]*x36+X[4,1]*x41+X[4,2]*x42+X[4,3]*x43+X[4,4]*x44+X[4,5]*x45+X[4,6]*x46+X[5,1]*x51+X[5,2]*x52+X[5,3]*x53+X[5,4]*x54+X[5,5]*x55+X[5,6]*x56+X[6,1]*x61+X[6,2]*x62+X[6,3]*x63+X[6,4]*x64+X[6,5]*x65+X[6,6]*x66, {x11+x12+x13+x14+x15+x16=b[1],x21+x22+x23+x24+x25+x26=b[2], x31+x32+x33+x34+x35+x36=b[3],x41+x42+x43+x44+x45+x46=b[4], x51+x52+x53+x54+x55+x56=b[5], x61+x62+x63+x64+x65+x66=b[6], x11+x21+x31+x41+x51+x61=c[1], x12+x22+x32+x42+x52+x62=c[2], x13+x23+x33+x43+x53+x63=c[3], x14+x24+x34+x44+x54+x64=c[4],x15+x25+x35+x45+x55+x65=c[5],x16+x26+x36+x46+x56+x66=c[6]},NONNEGATIVE);

{x11 = 0, x12 = 0, x13 = 0, x14 = 0, x15 = 0, x21 = 0, x22 = 0, x31 = 0, x32 = 0, x33 = 0, x36 = 0, x41 = 0, x51 = 0, x54 = 0, x55 = 0, x56 = 0, x64 = 0, x65 = 0, x66 = 0, x61 = 14, x16 = 50, x25 = 0, x26 = 0, x35 = 0, x43 = 0, x44 = 0, x52 = 0, x62 = 0, x34 = 12, x46 = 10, x24 = 12, x45 = 50, x63 = 1, x42 = 20, x23 = 6, x53 = 15}

> assign(%);

>f1x:=X[1,1]*x11+X[1,2]*x12+X[1,3]*x13+X[1,4]*x14+X[1,5]*x15+X[1,6]*x16+X[2,1]*x21+X[2,2]*x22+X[2,3]*x23+X[2,4]*x24+X[2,5]*x25+X[2,6]*x26+X[3,1]*x31+X[3,2]*x32+X[3,3]*x33+X[3,4]*x34+X[3,5]*x35+X[3,6]*x36+X[4,1]*x41+X[4,2]*x42+X[4,3]*x43+X[4,4]*x44+X[4,5]*x45+X[4,6]*x46+X[5,1]*x51+X[5,2]*x52+X[5,3]*x53+X[5,4]*x54+X[5,5]*x55+X[5,6]*x56+X[6,1]*x61+X[6,2]*x62+X[6,3]*x63+X[6,4]*x64+X[6,5]*x65+X[6,6]*x66;

f1x := 514

>[x11,x12,x13,x14,x15,x16];[x21,x22,x23,x24,x25,x26];[x31,x32,x33,x34,x35,x36];[x41,x42,x43,x44,x45,x46];[x51,x52,x53,x54,x55,x56];[x61,x62,x63,x64,x65,x66];f1x;

[0, 0, 0, 0, 0, 50]

[0, 0, 6, 12, 0, 0]

[0, 0, 0, 12, 0, 0]

[0, 20, 0, 0, 50, 10]

[0, 0, 15, 0, 0, 0]

[14, 0, 1, 0, 0, 0]

514

(Решить вторую транспортную задачу (с другими ценами), найдя цену перевозки и план перевозки)

>Y:=Matrix(6,6,[[3/2,8/2,9/2,1/2,9/2,0/2],[3/2,4/2,5/2,0/2,9/2,6/2],[2/2,7/2,6/2,0/2,9/2,0/2],[9/2,1/2,9/2,4/2,7/2,2/2],[2/2,4/2,5/2,6/2,4/2,1/2],[1/2,4/2,5/2,7/2,8/2,7/2]]);

Y := Matrix(6,6,{(1, 1) = 3/2, (1, 2) = 4, (1, 3) = 9/2, (1, 4) = 1/2, (1, 5) = 9/2, (2, 1) = 3/2, (2, 2) = 2, (2, 3) = 5/2, (2, 5) = 9/2, (2, 6) = 3, (3, 1) = 1, (3, 2) = 7/2, (3, 3) = 3, (3, 5) = 9/2, (4, 1) = 9/2, (4, 2) = 1/2, (4, 3) = 9/2, (4, 4) = 2, (4, 5) = 7/2, (4, 6) = 1, (5, 1) = 1, (5, 2) = 2, (5, 3) = 5/2, (5, 4) = 3, (5, 5) = 2, (5, 6) = 1/2, (6, 1) = 1/2, (6, 2) = 2, (6, 3) = 5/2, (6, 4) = 7/2, (6, 5) = 4, (6, 6) = 7/2},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> proc(Y,b,c)

>f2y,y11,y12,y13,y14,y15,y16,y21,y22,y23,y24,y25,y26,y31,y32,y33,y34,y35,y36,y41,y42,y43,y44,y45,y46,y51,y52,y53,y54,y55,y56,y61,y62,y63,y64,y65,y66;

Warning, premature end of input

> with(simplex):

>minimize(Y[1,1]*y11+Y[1,2]*y12+Y[1,3]*y13+Y[1,4]*y14+Y[1,5]*y15+Y[1,6]*y16+Y[2,1]*y21+Y[2,2]*y22+Y[2,3]*y23+Y[2,4]*y24+Y[2,5]*y25+Y[2,6]*y26+Y[3,1]*y31+Y[3,2]*y32+Y[3,3]*y33+Y[3,4]*y34+Y[3,5]*y35+Y[3,6]*y36+Y[4,1]*y41+Y[4,2]*y42+Y[4,3]*y43+Y[4,4]*y44+Y[4,5]*y45+Y[4,6]*y46+Y[5,1]*y51+Y[5,2]*y52+Y[5,3]*y53+Y[5,4]*y54+Y[5,5]*y55+Y[5,6]*y56+Y[6,1]*y61+Y[6,2]*y62+Y[6,3]*y63+Y[6,4]*y64+Y[6,5]*y65+Y[6,6]*y66, {y11+y12+y13+y14+y15+y16=b[1],y21+y22+y23+y24+y25+y26=b[2], y31+y32+y33+y34+y35+y36=b[3],y41+y42+y43+y44+y45+y46=b[4], y51+y52+y53+y54+y55+y56=b[5], y61+y62+y63+y64+y65+y66=b[6], y11+y21+y31+y41+y51+y61=c[1], y12+y22+y32+y42+y52+y62=c[2], y13+y23+y33+y43+y53+y63=c[3], y14+y24+y34+y44+y54+y64=c[4],y15+y25+y35+y45+y55+y65=c[5],y16+y26+y36+y46+y56+y66=c[6]},NONNEGATIVE);

{y54 = 0, y55 = 0, y56 = 0, y64 = 0, y65 = 0, y66 = 0, y61 = 14, y16 = 50, y43 = 0, y44 = 0, y52 = 0, y62 = 0, y34 = 12, y46 = 10, y23 = 6, y63 = 1, y45 = 50, y42 = 20, y24 = 12, y53 = 15, y25 = 0, y26 = 0, y35 = 0, y14 = 0, y15 = 0, y21 = 0, y11 = 0, y12 = 0, y13 = 0, y22 = 0, y31 = 0, y32 = 0, y36 = 0, y41 = 0, y51 = 0, y33 = 0}

> assign(%);

>f2y:=Y[1,1]*y11+Y[1,2]*y12+Y[1,3]*y13+Y[1,4]*y14+Y[1,5]*y15+Y[1,6]*y16+Y[2,1]*y21+Y[2,2]*y22+Y[2,3]*y23+Y[2,4]*y24+Y[2,5]*y25+Y[2,6]*y26+Y[3,1]*y31+Y[3,2]*y32+Y[3,3]*y33+Y[3,4]*y34+Y[3,5]*y35+Y[3,6]*y36+Y[4,1]*y41+Y[4,2]*y42+Y[4,3]*y43+Y[4,4]*y44+Y[4,5]*y45+Y[4,6]*y46+Y[5,1]*y51+Y[5,2]*y52+Y[5,3]*y53+Y[5,4]*y54+Y[5,5]*y55+Y[5,6]*y56+Y[6,1]*y61+Y[6,2]*y62+Y[6,3]*y63+Y[6,4]*y64+Y[6,5]*y65+Y[6,6]*y66;

f2y := 257

>[y11,y12,y13,y14,y15,y16];[y16,y21,y22,y23,y24,y25,y26];[y31,y32,y33,y34,y35,y36];[y41,y42,y43,y44,y45,y46];[y51,y52,y53,y54,y55,y56];[y61,y62,y63,y64,y65,y66];f2y;

[0, 0, 0, 0, 0, 50]

[50, 0, 0, 6, 12, 0, 0]

[0, 0, 0, 12, 0, 0]

[0, 20, 0, 0, 50, 10]

[0, 0, 15, 0, 0, 0]

[14, 0, 1, 0, 0, 0]

257

>f2x:=Y[1,1]*x11+Y[1,2]*x12+Y[1,3]*x13+Y[1,4]*x14+Y[1,5]*x15+Y[1,6]*x16+Y[2,1]*x21+Y[2,2]*x22+Y[2,3]*x23+Y[2,4]*x24+Y[2,5]*x25+Y[2,6]*x26+Y[3,1]*x31+Y[3,2]*x32+Y[3,3]*x33+Y[3,4]*x34+Y[3,5]*x35+Y[3,6]*x36+Y[4,1]*x41+Y[4,2]*x42+Y[4,3]*x43+Y[4,4]*x44+Y[4,5]*x45+Y[4,6]*x46+Y[5,1]*x51+Y[5,2]*x52+Y[5,3]*x53+Y[5,4]*x54+Y[5,5]*x55+Y[5,6]*x56+Y[6,1]*x61+Y[6,2]*x62+Y[6,3]*x63+Y[6,4]*x64+Y[6,5]*x65+Y[6,6]*x66;

f2x := 257

>f1y:=X[1,1]*y11+X[1,2]*y12+X[1,3]*y13+X[1,4]*y14+X[1,5]*y15+X[1,6]*y16+X[2,1]*y21+X[2,2]*y22+X[2,3]*y23+X[2,4]*y24+X[2,5]*y25+X[2,6]*y26+X[3,1]*y31+X[3,2]*y32+X[3,3]*y33+X[3,4]*y34+X[3,5]*y35+X[3,6]*y36+X[4,1]*y41+X[4,2]*y42+X[4,3]*y43+X[4,4]*y44+X[4,5]*y45+X[4,6]*y46+X[5,1]*y51+X[5,2]*y52+X[5,3]*y53+X[5,4]*y54+X[5,5]*y55+X[5,6]*y56+X[6,1]*y61+X[6,2]*y62+X[6,3]*y63+X[6,4]*y64+X[6,5]*y65+X[6,6]*y66;

f1y := 514

(Составляем матрицу М , где f1x - это план перевозки первой задачи, поставленный в функцию цели первой задачи; f2x - это план перевозки первой задачи поставленный, в функцию цели второй задачи; f1y - это план перевозки второй задачи, поставленный в функцию цели первой задачи; f2y - это план перевозки второй задачи, поставленный в функцию цели второй задачи)

> M:=Matrix(2,2);

M := Matrix(2,2,{},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> M[1,1]:=f1x/(f1x+f2x);

M[1,1] := 2/3

> M[1,2]:=f2x/(f1x+f2x);

M[1,2] := 1/3

> M[2,1]:=f1y/(f1y+f2y);

M[2,1] := 2/3

> M[2,2]:=f2y/(f1y+f2y);

M[2,2] := 1/3

> M;

Matrix(2,2,{(1, 1) = 2/3, (1, 2) = 1/3, (2, 1) = 2/3, (2, 2) = 1/3},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> with(LinearAlgebra):

(Матрицу M транспонируем. Полученную матрицу обозначаем A.)

> A:=Transpose(M);

A := Matrix(2,2,{(1, 2) = 2/3, (2, 1) = 1/3, (1, 1) = 2/3, (2, 2) = 1/3},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

(Находим собственные значения и собственные векторы матрицы А)

> AA:=Eigenvectors(A);

AA := Vector[column](2,{(2) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = []), Matrix(2,2,{(1, 1) = -1, (1, 2) = 2, (2, 1) = 1, (2, 2) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = [])

> L:=AA[1];

L := Vector[column](2,{(2) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = [])

> L1:=AA[2];

L1 := Matrix(2,2,{(1, 1) = -1, (1, 2) = 2, (2, 1) = 1, (2, 2) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = [])

(Берем один из столбцов матрицы собственных векторов, в зависимости конечно от собственных значений (если собственное значение равное единице стоит первым, то берем первый столбец, иначе второй ) и нормируем этот столбец)

> if L[1]=1 then i:=L1[1,1]/(L1[1,1]+L1[2,1]) else L[2]=1 ;i:=L1[1,2]/(L1[1,2]+L1[2,2]) end if;

1 = 1

i := 2/3

> if L[1]=1 then j:=L1[2,1]/(L1[1,1]+L1[2,1]) else L[2]=1; j:=L1[2,2]/(L1[1,2]+L1[2,2]) end if;

1 = 1

j := 1/3

(Первую координату нормированного вектора умножаем на первую матрицу цен и складываем с второй матрицей цен умноженное на вторую координату полученного нормированного вектора. Получили новую матрицу цен)

> Z:=i*X+j*Y;

Z := Matrix(6,6,{(6, 3) = 25/6, (6, 4) = 35/6, (6, 5) = 20/3, (6, 6) = 35/6, (4, 3) = 15/2, (4, 4) = 10/3, (4, 5) = 35/6, (4, 6) = 5/3, (5, 1) = 5/3, (5, 2) = 10/3, (5, 3) = 25/6, (5, 4) = 5, (5, 5) = 10/3, (5, 6) = 5/6, (6, 1) = 5/6, (6, 2) = 10/3, (2, 1) = 5/2, (2, 2) = 10/3, (2, 3) = 25/6, (2, 5) = 15/2, (1, 5) = 15/2, (2, 6) = 5, (3, 1) = 5/3, (3, 2) = 35/6, (3, 3) = 5, (3, 5) = 15/2, (4, 1) = 15/2, (4, 2) = 5/6, (1, 1) = 5/2, (1, 2) = 20/3, (1, 3) = 15/2, (1, 4) = 5/6},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

(Решаем новую транспортную задачу с таким же объемом поставок и потребностей, но с новыми ценами)

> proc(Z,b,c)

> f3z,z11,z12,z13,z14,z15,z16,z21,z22,z23,z24,z25,z26,z31,z32,z33,z34,z35,z36,z41,z42,z43,z44,z45,z46,z51,z52,z53,z54,z55,z56,z61,z62,z63,z64,z65,z66;

>

Warning, premature end of input

> with(simplex):

> minimize(Z[1,1]*z11+Z[1,2]*z12+Z[1,3]*z13+Z[1,4]*z14+Z[1,5]*z15+Z[1,6]*z16+Z[2,1]*z21+Z[2,2]*z22+Z[2,3]*z23+Z[2,4]*z24+Z[2,5]*z25+Z[2,6]*z26+Z[3,1]*z31+Z[3,2]*z32+Z[3,3]*z33+Z[3,4]*z34+Z[3,5]*z35+Z[3,6]*z36+Z[4,1]*z41+Z[4,2]*z42+Z[4,3]*z43+Z[4,4]*z44+Z[4,5]*z45+Z[4,6]*z46+Z[5,1]*z51+Z[5,2]*z52+Z[5,3]*z53+Z[5,4]*z54+Z[5,5]*z55+Z[5,6]*z56+Z[6,1]*z61+Z[6,2]*z62+Z[6,3]*z63+Z[6,4]*z64+Z[6,5]*z65+Z[6,6]*z66, {z11+z12+z13+z14+z15+z16=b[1],z21+z22+z23+z24+z25+z26=b[2], z31+z32+z33+z34+z35+z36=b[3],z41+z42+z43+z44+z45+z46=b[4], z51+z52+z53+z54+z55+z56=b[5], z61+z62+z63+z64+z65+z66=b[6], z11+z21+z31+z41+z51+z61=c[1], z12+z22+z32+z42+z52+z62=c[2], z13+z23+z33+z43+z53+z63=c[3], z14+z24+z34+z44+z54+z64=c[4],z15+z25+z35+z45+z55+z65=c[5],z16+z26+z36+z46+z56+z66=c[6]},NONNEGATIVE);

{z53 = 15, z44 = 0, z43 = 0, z36 = 0, z41 = 0, z64 = 0, z65 = 0, z66 = 0, z51 = 0, z52 = 0, z54 = 0, z56 = 0, z11 = 0, z12 = 0, z32 = 0, z33 = 0, z35 = 0, z46 = 10, z24 = 12, z16 = 50, z42 = 20, z61 = 14, z62 = 0, z63 = 1, z45 = 50, z23 = 6, z34 = 12, z55 = 0, z26 = 0, z31 = 0, z14 = 0, z15 = 0, z13 = 0, z22 = 0, z25 = 0, z21 = 0}

> assign(%);

> f3z:=Z[1,1]*z11+Z[1,2]*z12+Z[1,3]*z13+Z[1,4]*z14+Z[1,5]*z15+Z[1,6]*z16+Z[2,1]*z21+Z[2,2]*z22+Z[2,3]*z23+Z[2,4]*z24+Z[2,5]*z25+Z[2,6]*z26+Z[3,1]*z31+Z[3,2]*z32+Z[3,3]*z33+Z[3,4]*z34+Z[3,5]*z35+Z[3,6]*z36+Z[4,1]*z41+Z[4,2]*z42+Z[4,3]*z43+Z[4,4]*z44+Z[4,5]*z45+Z[4,6]*z46+Z[5,1]*z51+Z[5,2]*z52+Z[5,3]*z53+Z[5,4]*z54+Z[5,5]*z55+Z[5,6]*z56+Z[6,1]*z61+Z[6,2]*z62+Z[6,3]*z63+Z[6,4]*z64+Z[6,5]*z65+Z[6,6]*z66;

f3z := 1285/3

> [z11,z12,z13,z14,z15,z16];[z21,z22,z23,z24,z25,z26];[z31,z32,z33,z34,z35,z36];[z41,z42,z43,z44,z45,z46];[z51,z52,z53,z54,z55,z56];[z61,z62,z63,z64,z65,z66];f3z;

[0, 0, 0, 0, 0, 50]

[0, 0, 6, 12, 0, 0]

[0, 0, 0, 12, 0, 0]

[0, 20, 0, 0, 50, 10]

[0, 0, 15, 0, 0, 0]

[14, 0, 1, 0, 0, 0]

1285/3

(Новый план перевозок ставим в функцию цели первой транспортной задачи и таким образом получаем первое УПРАВЛЕНИЕ)

> f4z:=X[1,1]*z11+X[1,2]*z12+X[1,3]*z13+X[1,4]*z14+X[1,5]*z15+X[1,6]*z16+X[2,1]*z21+X[2,2]*z22+X[2,3]*z23+X[2,4]*z24+X[2,5]*z25+X[2,6]*z26+X[3,1]*z31+X[3,2]*z32+X[3,3]*z33+X[3,4]*z34+X[3,5]*z35+X[3,6]*z36+X[4,1]*z41+X[4,2]*z42+X[4,3]*z43+X[4,4]*z44+X[4,5]*z45+X[4,6]*z46+X[5,1]*z51+X[5,2]*z52+X[5,3]*z53+X[5,4]*z54+X[5,5]*z55+X[5,6]*z56+X[6,1]*z61+X[6,2]*z62+X[6,3]*z63+X[6,4]*z64+X[6,5]*z65+X[6,6]*z66;

f4z := 514

(Новый план перевозок ставим в функцию цели второй транспортной задачи и таким образом получаем второе УПРАВЛЕНИЕ)

> f5z:=Y[1,1]*z11+Y[1,2]*z12+Y[1,3]*z13+Y[1,4]*z14+Y[1,5]*z15+Y[1,6]*z16+Y[2,1]*z21+Y[2,2]*z22+Y[2,3]*z23+Y[2,4]*z24+Y[2,5]*z25+Y[2,6]*z26+Y[3,1]*z31+Y[3,2]*z32+Y[3,3]*z33+Y[3,4]*z34+Y[3,5]*z35+Y[3,6]*z36+Y[4,1]*z41+Y[4,2]*z42+Y[4,3]*z43+Y[4,4]*z44+Y[4,5]*z45+Y[4,6]*z46+Y[5,1]*z51+Y[5,2]*z52+Y[5,3]*z53+Y[5,4]*z54+Y[5,5]*z55+Y[5,6]*z56+Y[6,1]*z61+Y[6,2]*z62+Y[6,3]*z63+Y[6,4]*z64+Y[6,5]*z65+Y[6,6]*z66;

f5z := 257

Приложение 3

Листинг программы решения транспортной задачи в векторных координатах (Для трёх матриц)

> restart:

> b:=[50,18,12,80,15,15];

b := [50, 18, 12, 80, 15, 15]

> c:=[14,20,22,24,50,60];

c := [14, 20, 22, 24, 50, 60]

(Решить первую транспортную задачу, найдя цену перевозки и план перевозки)

>X:=Matrix(6,6,[[3,8,9,1,9,0],[3,4,5,0,9,6],[2,7,6,0,9,0],[9,1,9,4,7,2],[2,4,5,6,4,1],[1,4,5,7,8,7]]);

X := Matrix(6,6,{(1, 1) = 3, (1, 2) = 8, (1, 3) = 9, (1, 4) = 1, (1, 5) = 9, (2, 1) = 3, (2, 2) = 4, (2, 3) = 5, (2, 5) = 9, (2, 6) = 6, (3, 1) = 2, (3, 2) = 7, (3, 3) = 6, (3, 5) = 9, (4, 1) = 9, (4, 2) = 1, (4, 3) = 9, (4, 4) = 4, (4, 5) = 7, (4, 6) = 2, (5, 1) = 2, (5, 2) = 4, (5, 3) = 5, (5, 4) = 6, (5, 5) = 4, (5, 6) = 1, (6, 1) = 1, (6, 2) = 4, (6, 3) = 5, (6, 4) = 7, (6, 5) = 8, (6, 6) = 7},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> proc(X,b,c)

>f1x,x11,x12,x13,x14,x15,x16,x21,x22,x23,x24,x25,x26,x31,x32,x33,x34,x35,x36,x41,x42,x43,x44,x45,x46,x51,x52,x53,x54,x55,x56,x61,x62,x63,x64,x65,x66;

Warning, premature end of input

> with(simplex):

Warning, the protected names maximize and minimize have been redefined and unprotected

>minimize(X[1,1]*x11+X[1,2]*x12+X[1,3]*x13+X[1,4]*x14+X[1,5]*x15+X[1,6]*x16+X[2,1]*x21+X[2,2]*x22+X[2,3]*x23+X[2,4]*x24+X[2,5]*x25+X[2,6]*x26+X[3,1]*x31+X[3,2]*x32+X[3,3]*x33+X[3,4]*x34+X[3,5]*x35+X[3,6]*x36+X[4,1]*x41+X[4,2]*x42+X[4,3]*x43+X[4,4]*x44+X[4,5]*x45+X[4,6]*x46+X[5,1]*x51+X[5,2]*x52+X[5,3]*x53+X[5,4]*x54+X[5,5]*x55+X[5,6]*x56+X[6,1]*x61+X[6,2]*x62+X[6,3]*x63+X[6,4]*x64+X[6,5]*x65+X[6,6]*x66, {x11+x12+x13+x14+x15+x16=b[1],x21+x22+x23+x24+x25+x26=b[2], x31+x32+x33+x34+x35+x36=b[3],x41+x42+x43+x44+x45+x46=b[4], x51+x52+x53+x54+x55+x56=b[5], x61+x62+x63+x64+x65+x66=b[6], x11+x21+x31+x41+x51+x61=c[1], x12+x22+x32+x42+x52+x62=c[2], x13+x23+x33+x43+x53+x63=c[3], x14+x24+x34+x44+x54+x64=c[4],x15+x25+x35+x45+x55+x65=c[5],x16+x26+x36+x46+x56+x66=c[6]},NONNEGATIVE);

{x11 = 0, x12 = 0, x13 = 0, x14 = 0, x15 = 0, x21 = 0, x22 = 0, x31 = 0, x32 = 0, x33 = 0, x36 = 0, x41 = 0, x51 = 0, x54 = 0, x55 = 0, x56 = 0, x64 = 0, x65 = 0, x66 = 0, x61 = 14, x16 = 50, x25 = 0, x26 = 0, x35 = 0, x43 = 0, x44 = 0, x52 = 0, x62 = 0, x34 = 12, x46 = 10, x24 = 12, x45 = 50, x63 = 1, x42 = 20, x23 = 6, x53 = 15}

> assign(%);

>f1x:=X[1,1]*x11+X[1,2]*x12+X[1,3]*x13+X[1,4]*x14+X[1,5]*x15+X[1,6]*x16+X[2,1]*x21+X[2,2]*x22+X[2,3]*x23+X[2,4]*x24+X[2,5]*x25+X[2,6]*x26+X[3,1]*x31+X[3,2]*x32+X[3,3]*x33+X[3,4]*x34+X[3,5]*x35+X[3,6]*x36+X[4,1]*x41+X[4,2]*x42+X[4,3]*x43+X[4,4]*x44+X[4,5]*x45+X[4,6]*x46+X[5,1]*x51+X[5,2]*x52+X[5,3]*x53+X[5,4]*x54+X[5,5]*x55+X[5,6]*x56+X[6,1]*x61+X[6,2]*x62+X[6,3]*x63+X[6,4]*x64+X[6,5]*x65+X[6,6]*x66;

f1x := 514

>[x11,x12,x13,x14,x15,x16];[x21,x22,x23,x24,x25,x26];[x31,x32,x33,x34,x35,x36];[x41,x42,x43,x44,x45,x46];[x51,x52,x53,x54,x55,x56];[x61,x62,x63,x64,x65,x66];f1x;

[0, 0, 0, 0, 0, 50]

[0, 0, 6, 12, 0, 0]

[0, 0, 0, 12, 0, 0]

[0, 20, 0, 0, 50, 10]

[0, 0, 15, 0, 0, 0]

[14, 0, 1, 0, 0, 0]

514

(Решить вторую транспортную задачу (с другими ценами), найдя цену перевозки и план перевозки)

>Y:=Matrix(6,6,[[3/2,8/2,9/2,1/2,9/2,0/2],[3/2,4/2,5/2,0/2,9/2,6/2],[2/2,7/2,6/2,0/2,9/2,0/2],[9/2,1/2,9/2,4/2,7/2,2/2],[2/2,4/2,5/2,6/2,4/2,1/2],[1/2,4/2,5/2,7/2,8/2,7/2]]);

Y := Matrix(6,6,{(1, 1) = 3/2, (1, 2) = 4, (1, 3) = 9/2, (1, 4) = 1/2, (1, 5) = 9/2, (2, 1) = 3/2, (2, 2) = 2, (2, 3) = 5/2, (2, 5) = 9/2, (2, 6) = 3, (3, 1) = 1, (3, 2) = 7/2, (3, 3) = 3, (3, 5) = 9/2, (4, 1) = 9/2, (4, 2) = 1/2, (4, 3) = 9/2, (4, 4) = 2, (4, 5) = 7/2, (4, 6) = 1, (5, 1) = 1, (5, 2) = 2, (5, 3) = 5/2, (5, 4) = 3, (5, 5) = 2, (5, 6) = 1/2, (6, 1) = 1/2, (6, 2) = 2, (6, 3) = 5/2, (6, 4) = 7/2, (6, 5) = 4, (6, 6) = 7/2},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> proc(Y,b,c)

>f2y,y11,y12,y13,y14,y15,y16,y21,y22,y23,y24,y25,y26,y31,y32,y33,y34,y35,y36,y41,y42,y43,y44,y45,y46,y51,y52,y53,y54,y55,y56,y61,y62,y63,y64,y65,y66;

Warning, premature end of input

> with(simplex):

>minimize(Y[1,1]*y11+Y[1,2]*y12+Y[1,3]*y13+Y[1,4]*y14+Y[1,5]*y15+Y[1,6]*y16+Y[2,1]*y21+Y[2,2]*y22+Y[2,3]*y23+Y[2,4]*y24+Y[2,5]*y25+Y[2,6]*y26+Y[3,1]*y31+Y[3,2]*y32+Y[3,3]*y33+Y[3,4]*y34+Y[3,5]*y35+Y[3,6]*y36+Y[4,1]*y41+Y[4,2]*y42+Y[4,3]*y43+Y[4,4]*y44+Y[4,5]*y45+Y[4,6]*y46+Y[5,1]*y51+Y[5,2]*y52+Y[5,3]*y53+Y[5,4]*y54+Y[5,5]*y55+Y[5,6]*y56+Y[6,1]*y61+Y[6,2]*y62+Y[6,3]*y63+Y[6,4]*y64+Y[6,5]*y65+Y[6,6]*y66, {y11+y12+y13+y14+y15+y16=b[1],y21+y22+y23+y24+y25+y26=b[2], y31+y32+y33+y34+y35+y36=b[3],y41+y42+y43+y44+y45+y46=b[4], y51+y52+y53+y54+y55+y56=b[5], y61+y62+y63+y64+y65+y66=b[6], y11+y21+y31+y41+y51+y61=c[1], y12+y22+y32+y42+y52+y62=c[2], y13+y23+y33+y43+y53+y63=c[3], y14+y24+y34+y44+y54+y64=c[4],y15+y25+y35+y45+y55+y65=c[5],y16+y26+y36+y46+y56+y66=c[6]},NONNEGATIVE);

{y54 = 0, y55 = 0, y56 = 0, y64 = 0, y65 = 0, y66 = 0, y61 = 14, y16 = 50, y43 = 0, y44 = 0, y52 = 0, y62 = 0, y34 = 12, y46 = 10, y23 = 6, y63 = 1, y45 = 50, y42 = 20, y24 = 12, y53 = 15, y25 = 0, y26 = 0, y35 = 0, y14 = 0, y15 = 0, y21 = 0, y11 = 0, y12 = 0, y13 = 0, y22 = 0, y31 = 0, y32 = 0, y36 = 0, y41 = 0, y51 = 0, y33 = 0}

> assign(%);

>f2y:=Y[1,1]*y11+Y[1,2]*y12+Y[1,3]*y13+Y[1,4]*y14+Y[1,5]*y15+Y[1,6]*y16+Y[2,1]*y21+Y[2,2]*y22+Y[2,3]*y23+Y[2,4]*y24+Y[2,5]*y25+Y[2,6]*y26+Y[3,1]*y31+Y[3,2]*y32+Y[3,3]*y33+Y[3,4]*y34+Y[3,5]*y35+Y[3,6]*y36+Y[4,1]*y41+Y[4,2]*y42+Y[4,3]*y43+Y[4,4]*y44+Y[4,5]*y45+Y[4,6]*y46+Y[5,1]*y51+Y[5,2]*y52+Y[5,3]*y53+Y[5,4]*y54+Y[5,5]*y55+Y[5,6]*y56+Y[6,1]*y61+Y[6,2]*y62+Y[6,3]*y63+Y[6,4]*y64+Y[6,5]*y65+Y[6,6]*y66;

f2y := 257

>[y11,y12,y13,y14,y15,y16];[y16,y21,y22,y23,y24,y25,y26];[y31,y32,y33,y34,y35,y36];[y41,y42,y43,y44,y45,y46];[y51,y52,y53,y54,y55,y56];[y61,y62,y63,y64,y65,y66];f2y;

[0, 0, 0, 0, 0, 50]

[50, 0, 0, 6, 12, 0, 0]

[0, 0, 0, 12, 0, 0]

[0, 20, 0, 0, 50, 10]

[0, 0, 15, 0, 0, 0]

[14, 0, 1, 0, 0, 0]

257

(Решить третью транспортную задачу (с другими ценами), найдя цену перевозки и план перевозки)

>V:=Matrix(6,6,[[3/6,8/6,9/6,1/6,9/6,0/6],[3/6,4/6,5/6,0/6,9/6,6/6],[2/6,7/6,6/6,0/6,9/6,0/6],[9/6,1/6,9/6,4/6,7/6,2/6],[2/6,4/6,5/6,6/6,4/6,1/6],[1/6,4/6,5/6,7/6,8/6,7/6]]);

V := Matrix(6,6,{(5, 3) = 5/6, (5, 4) = 1, (5, 5) = 2/3, (5, 6) = 1/6, (6, 1) = 1/6, (6, 2) = 2/3, (6, 3) = 5/6, (6, 4) = 7/6, (6, 5) = 4/3, (6, 6) = 7/6, (4, 5) = 7/6, (4, 6) = 1/3, (5, 1) = 1/3, (5, 2) = 2/3, (1, 1) = 1/2, (1, 2) = 4/3, (1, 3) = 3/2, (1, 4) = 1/6, (1, 5) = 3/2, (2, 1) = 1/2, (2, 2) = 2/3, (2, 3) = 5/6, (2, 5) = 3/2, (2, 6) = 1, (3, 1) = 1/3, (3, 2) = 7/6, (3, 3) = 1, (3, 5) = 3/2, (4, 1) = 3/2, (4, 2) = 1/6, (4, 3) = 3/2, (4, 4) = 2/3},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> proc(V,b,c)

>f3v,v11,v12,v13,v14,v15,v16,v21,v22,v23,v24,v25,v26,v31,v32,v33,v34,v35,v36,v41,v42,v43,v44,v45,v46,v51,v52,v53,v54,v55,v56,v61,v62,v63,v64,v65,v66;

Warning, premature end of input

> with(simplex):

>minimize(V[1,1]*v11+V[1,2]*v12+V[1,3]*v13+V[1,4]*v14+V[1,5]*v15+V[1,6]*v16+V[2,1]*v21+V[2,2]*v22+V[2,3]*v23+V[2,4]*v24+V[2,5]*v25+V[2,6]*v26+V[3,1]*v31+V[3,2]*v32+V[3,3]*v33+V[3,4]*v34+V[3,5]*v35+V[3,6]*v36+V[4,1]*v41+V[4,2]*v42+V[4,3]*v43+V[4,4]*v44+V[4,5]*v45+V[4,6]*v46+V[5,1]*v51+V[5,2]*v52+V[5,3]*v53+V[5,4]*v54+V[5,5]*v55+V[5,6]*v56+V[6,1]*v61+V[6,2]*v62+V[6,3]*v63+V[6,4]*v64+V[6,5]*v65+V[6,6]*v66, {v11+v12+v13+v14+v15+v16=b[1],v21+v22+v23+v24+v25+v26=b[2], v31+v32+v33+v34+v35+v36=b[3],v41+v42+v43+v44+v45+v46=b[4], v51+v52+v53+v54+v55+v56=b[5], v61+v62+v63+v64+v65+v66=b[6], v11+v21+v31+v41+v51+v61=c[1], v12+v22+v32+v42+v52+v62=c[2], v13+v23+v33+v43+v53+v63=c[3], v14+v24+v34+v44+v54+v64=c[4],v15+v25+v35+v45+v55+v65=c[5],v16+v26+v36+v46+v56+v66=c[6]},NONNEGATIVE);

{v25 = 0, v26 = 0, v35 = 0, v43 = 0, v44 = 0, v52 = 0, v62 = 0, v34 = 12, v46 = 10, v24 = 12, v23 = 6, v45 = 50, v63 = 1, v42 = 20, v53 = 15, v51 = 0, v54 = 0, v55 = 0, v56 = 0, v64 = 0, v65 = 0, v66 = 0, v61 = 14, v16 = 50, v14 = 0, v15 = 0, v21 = 0, v22 = 0, v31 = 0, v32 = 0, v33 = 0, v36 = 0, v41 = 0, v13 = 0, v11 = 0, v12 = 0}

> assign(%);

>f3v:=V[1,1]*v11+V[1,2]*v12+V[1,3]*v13+V[1,4]*v14+V[1,5]*v15+V[1,6]*v16+V[2,1]*v21+V[2,2]*v22+V[2,3]*v23+V[2,4]*v24+V[2,5]*v25+V[2,6]*v26+V[3,1]*v31+V[3,2]*v32+V[3,3]*v33+V[3,4]*v34+V[3,5]*v35+V[3,6]*v36+V[4,1]*v41+V[4,2]*v42+V[4,3]*v43+V[4,4]*v44+V[4,5]*v45+V[4,6]*v46+V[5,1]*v51+V[5,2]*v52+V[5,3]*v53+V[5,4]*v54+V[5,5]*v55+V[5,6]*v56+V[6,1]*v61+V[6,2]*v62+V[6,3]*v63+V[6,4]*v64+V[6,5]*v65+V[6,6]*v66;

f3v := 257/3

>[v11,v12,v13,v14,v15,v16];[v21,v22,v23,v24,v25,v26];[v31,v32,v33,v34,v35,v36];[v41,v42,v43,v44,v45,v46];[v51,v52,v53,v54,v55,v56];[v61,v62,v63,v64,v65,v66];f3v;

[0, 0, 0, 0, 0, 50]

[0, 0, 6, 12, 0, 0]

[0, 0, 0, 12, 0, 0]

[0, 20, 0, 0, 50, 10]

[0, 0, 15, 0, 0, 0]

[14, 0, 1, 0, 0, 0]

257/3

>f2v:=Y[1,1]*v11+Y[1,2]*v12+Y[1,3]*v13+Y[1,4]*v14+Y[1,5]*v15+Y[1,6]*v16+Y[2,1]*v21+Y[2,2]*v22+Y[2,3]*v23+Y[2,4]*v24+Y[2,5]*v25+Y[2,6]*v26+Y[3,1]*v31+Y[3,2]*v32+Y[3,3]*v33+Y[3,4]*v34+Y[3,5]*v35+Y[3,6]*v36+Y[4,1]*v41+Y[4,2]*v42+Y[4,3]*v43+Y[4,4]*v44+Y[4,5]*v45+Y[4,6]*v46+Y[5,1]*v51+Y[5,2]*v52+Y[5,3]*v53+Y[5,4]*v54+Y[5,5]*v55+Y[5,6]*v56+Y[6,1]*v61+Y[6,2]*v62+Y[6,3]*v63+Y[6,4]*v64+Y[6,5]*v65+Y[6,6]*v66;

f2v := 257

>f2x:=Y[1,1]*x11+Y[1,2]*x12+Y[1,3]*x13+Y[1,4]*x14+Y[1,5]*x15+Y[1,6]*x16+Y[2,1]*x21+Y[2,2]*x22+Y[2,3]*x23+Y[2,4]*x24+Y[2,5]*x25+Y[2,6]*x26+Y[3,1]*x31+Y[3,2]*x32+Y[3,3]*x33+Y[3,4]*x34+Y[3,5]*x35+Y[3,6]*x36+Y[4,1]*x41+Y[4,2]*x42+Y[4,3]*x43+Y[4,4]*x44+Y[4,5]*x45+Y[4,6]*x46+Y[5,1]*x51+Y[5,2]*x52+Y[5,3]*x53+Y[5,4]*x54+Y[5,5]*x55+Y[5,6]*x56+Y[6,1]*x61+Y[6,2]*x62+Y[6,3]*x63+Y[6,4]*x64+Y[6,5]*x65+Y[6,6]*x66;

f2x := 257

>f1y:=X[1,1]*y11+X[1,2]*y12+X[1,3]*y13+X[1,4]*y14+X[1,5]*y15+X[1,6]*y16+X[2,1]*y21+X[2,2]*y22+X[2,3]*y23+X[2,4]*y24+X[2,5]*y25+X[2,6]*y26+X[3,1]*y31+X[3,2]*y32+X[3,3]*y33+X[3,4]*y34+X[3,5]*y35+X[3,6]*y36+X[4,1]*y41+X[4,2]*y42+X[4,3]*y43+X[4,4]*y44+X[4,5]*y45+X[4,6]*y46+X[5,1]*y51+X[5,2]*y52+X[5,3]*y53+X[5,4]*y54+X[5,5]*y55+X[5,6]*y56+X[6,1]*y61+X[6,2]*y62+X[6,3]*y63+X[6,4]*y64+X[6,5]*y65+X[6,6]*y66;

f1y := 514

>f1v:=X[1,1]*v11+X[1,2]*v12+X[1,3]*v13+X[1,4]*v14+X[1,5]*v15+X[1,6]*v16+X[2,1]*v21+X[2,2]*v22+X[2,3]*v23+X[2,4]*v24+X[2,5]*v25+X[2,6]*v26+X[3,1]*v31+X[3,2]*v32+X[3,3]*v33+X[3,4]*v34+X[3,5]*v35+X[3,6]*v36+X[4,1]*v41+X[4,2]*v42+X[4,3]*v43+X[4,4]*v44+X[4,5]*v45+X[4,6]*v46+X[5,1]*v51+X[5,2]*v52+X[5,3]*v53+X[5,4]*v54+X[5,5]*v55+X[5,6]*v56+X[6,1]*v61+X[6,2]*v62+X[6,3]*v63+X[6,4]*v64+X[6,5]*v65+X[6,6]*v66;

f1v := 514

>f3x:=V[1,1]*x11+V[1,2]*x12+V[1,3]*x13+V[1,4]*x14+V[1,5]*x15+V[1,6]*x16+V[2,1]*x21+V[2,2]*x22+V[2,3]*x23+V[2,4]*x24+V[2,5]*x25+V[2,6]*x26+V[3,1]*x31+V[3,2]*x32+V[3,3]*x33+V[3,4]*x34+V[3,5]*x35+V[3,6]*x36+V[4,1]*x41+V[4,2]*x42+V[4,3]*x43+V[4,4]*x44+V[4,5]*x45+V[4,6]*x46+V[5,1]*x51+V[5,2]*x52+V[5,3]*x53+V[5,4]*x54+V[5,5]*x55+V[5,6]*x56+V[6,1]*x61+V[6,2]*x62+V[6,3]*x63+V[6,4]*x64+V[6,5]*x65+V[6,6]*x66;

f3x := 257/3

>f3y:=V[1,1]*y11+V[1,2]*y12+V[1,3]*y13+V[1,4]*y14+V[1,5]*y15+V[1,6]*y16+V[2,1]*y21+V[2,2]*y22+V[2,3]*y23+V[2,4]*y24+V[2,5]*y25+V[2,6]*y26+V[3,1]*y31+V[3,2]*y32+V[3,3]*y33+V[3,4]*y34+V[3,5]*y35+V[3,6]*y36+V[4,1]*y41+V[4,2]*y42+V[4,3]*y43+V[4,4]*y44+V[4,5]*y45+V[4,6]*y46+V[5,1]*y51+V[5,2]*y52+V[5,3]*y53+V[5,4]*y54+V[5,5]*y55+V[5,6]*y56+V[6,1]*y61+V[6,2]*y62+V[6,3]*y63+V[6,4]*y64+V[6,5]*y65+V[6,6]*y66;

f3y := 257/3

(Составляем матрицу , где f1x - это план перевозки первой задачи, поставленный в функцию цели первой задачи; f2x - это план перевозки первой задачи поставленный, в функцию цели второй задачи; f3x - это план перевозки первой задачи поставленный, в функцию цели третьей задачи; f1y - это план перевозки второй задачи, поставленный в функцию цели первой задачи; f2y - это план перевозки второй задачи, поставленный в функцию цели второй задачи; f3y - это план перевозки второй задачи, поставленный в функцию цели третьей задачи; f1v - это план перевозки третьей задачи, поставленный в функцию цели первой задачи; f2v - это план перевозки третьей задачи, поставленный в функцию цели второй задачи; f3v - это план перевозки третьей задачи, поставленный в функцию цели третьей задачи.)

> M:=Matrix(3,3);

M := Matrix(3,3,{},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> M[1,1]:=f1x/(f1x+f2x+f3x);

M[1,1] := 3/5

> M[1,2]:=f2x/(f1x+f2x+f3x);

M[1,2] := 3/10

> M[1,3]:=f3x/(f1x+f2x+f3x);

M[1,3] := 1/10

> M[2,1]:=f1y/(f1y+f2y+f3y);

M[2,1] := 3/5

> M[2,2]:=f2y/(f1y+f2y+f3y);

M[2,2] := 3/10

> M[2,3]:=f3y/(f1y+f2y+f3y);

M[2,3] := 1/10

> M[3,1]:=f1v/(f1v+f2v+f3v);

M[3,1] := 3/5

> M[3,2]:=f2v/(f1v+f2v+f3v);

M[3,2] := 3/10

> M[3,3]:=f3v/(f1v+f2v+f3v);

M[3,3] := 1/10

> M;

Matrix(3,3,{(1, 1) = 3/5, (1, 2) = 3/10, (1, 3) = 1/10, (2, 1) = 3/5, (2, 2) = 3/10, (2, 3) = 1/10, (3, 1) = 3/5, (3, 2) = 3/10, (3, 3) = 1/10},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> with(LinearAlgebra):

(Матрицу M транспонируем. Полученную матрицу обозначаем A)

> A:=Transpose(M);

A := Matrix(3,3,{(1, 1) = 3/5, (2, 2) = 3/10, (3, 3) = 1/10, (2, 3) = 3/10, (3, 1) = 1/10, (3, 2) = 1/10, (1, 2) = 3/5, (1, 3) = 3/5, (2, 1) = 3/10},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

(Находим собственные значения и собственные векторы матрицы А)

> AA:=Eigenvectors(A);

AA := Vector[column](3,{(1) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = []), Matrix(3,3,{(1, 1) = 6, (1, 2) = -1, (1, 3) = -1, (2, 1) = 3, (2, 2) = 1, (3, 1) = 1, (3, 3) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = [])

> L:=AA[1];

L := Vector[column](3,{(1) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = [])

> L1:=AA[2];

L1 := Matrix(3,3,{(1, 1) = 6, (1, 2) = -1, (1, 3) = -1, (2, 1) = 3, (2, 2) = 1, (3, 1) = 1, (3, 3) = 1},datatype = algebraic,storage = rectangular,order = Fortran_order,shape = [])

(Берем один из столбцов матрицы собственных векторов, в зависимости конечно от собственных значений (если собственное значение равное единице стоит первым, то берем первый столбец, иначе второй, а если и не второй, то третий) и нормируем этот столбец)

> if L[1]=1 then i:=L1[1,1]/(L1[1,1]+L1[2,1]+L1[3,1]) elif L[2]=1 then i:=L1[1,2]/(L1[1,2]+L1[2,2]+L1[3,2]) else L[3]=1 ;i:=L1[1,3]/(L1[1,3]+L1[2,3]+L1[3,3]) end if;

i := 3/5

> if L[1]=1 then j:=L1[2,1]/(L1[1,1]+L1[2,1]+L1[3,1]) elif L[2]=1 then j:=L1[2,2]/(L1[1,2]+L1[2,2]+L1[3,2]) else L[3]=1 ;j:=L1[2,3]/(L1[1,3]+L1[2,3]+L1[3,2]) end if;

j := 3/10

> if L[1]=1 then k:=L1[3,1]/(L1[1,1]+L1[2,1]+L1[3,1]) elif L[2]=1 then k:=L1[3,2]/(L1[1,2]+L1[2,2]+L1[3,2]) else L[3]=1 ;k:=L1[3,3]/(L1[1,3]+L1[2,3]+L1[3,2]) end if;

k := 1/10

(Первую координату нормированного вектора умножаем на первую матрицу цен и складываем с второй матрицей цен умноженное на вторую координату полученного нормированного вектора и ко всему этому прибавляем третью матрицу цен умноженное на третью координату нормированного вектора. Получили новую матрицу цен.)

> Z:=i*X+j*Y+k*V;

Z := Matrix(6,6,{(1, 1) = 23/10, (1, 2) = 92/15, (1, 3) = 69/10, (1, 4) = 23/30, (1, 5) = 69/10, (2, 1) = 23/10, (2, 2) = 46/15, (2, 3) = 23/6, (6, 6) = 161/30, (4, 2) = 23/30, (4, 3) = 69/10, (4, 4) = 46/15, (4, 5) = 161/30, (4, 6) = 23/15, (5, 1) = 23/15, (5, 2) = 46/15, (5, 3) = 23/6, (5, 4) = 23/5, (5, 5) = 46/15, (5, 6) = 23/30, (6, 1) = 23/30, (6, 2) = 46/15, (6, 3) = 23/6, (6, 4) = 161/30, (6, 5) = 92/15, (2, 5) = 69/10, (2, 6) = 23/5, (3, 1) = 23/15, (3, 2) = 161/30, (3, 3) = 23/5, (3, 5) = 69/10, (4, 1) = 69/10},datatype = anything,storage = rectangular,order = Fortran_order,shape = [])

> proc(Z,b,c)

>f3z,z11,z12,z13,z14,z15,z16,z21,z22,z23,z24,z25,z26,z31,z32,z33,z34,z35,z36,z41,z42,z43,z44,z45,z46,z51,z52,z53,z54,z55,z56,z61,z62,z63,z64,z65,z66;

Warning, premature end of input

(Решаем новую транспортную задачу с таким же объемом поставок и потребностей, но с новыми ценами)

> with(simplex):

>minimize(Z[1,1]*z11+Z[1,2]*z12+Z[1,3]*z13+Z[1,4]*z14+Z[1,5]*z15+Z[1,6]*z16+Z[2,1]*z21+Z[2,2]*z22+Z[2,3]*z23+Z[2,4]*z24+Z[2,5]*z25+Z[2,6]*z26+Z[3,1]*z31+Z[3,2]*z32+Z[3,3]*z33+Z[3,4]*z34+Z[3,5]*z35+Z[3,6]*z36+Z[4,1]*z41+Z[4,2]*z42+Z[4,3]*z43+Z[4,4]*z44+Z[4,5]*z45+Z[4,6]*z46+Z[5,1]*z51+Z[5,2]*z52+Z[5,3]*z53+Z[5,4]*z54+Z[5,5]*z55+Z[5,6]*z56+Z[6,1]*z61+Z[6,2]*z62+Z[6,3]*z63+Z[6,4]*z64+Z[6,5]*z65+Z[6,6]*z66, {z11+z12+z13+z14+z15+z16=b[1],z21+z22+z23+z24+z25+z26=b[2], z31+z32+z33+z34+z35+z36=b[3],z41+z42+z43+z44+z45+z46=b[4], z51+z52+z53+z54+z55+z56=b[5], z61+z62+z63+z64+z65+z66=b[6], z11+z21+z31+z41+z51+z61=c[1], z12+z22+z32+z42+z52+z62=c[2], z13+z23+z33+z43+z53+z63=c[3], z14+z24+z34+z44+z54+z64=c[4],z15+z25+z35+z45+z55+z65=c[5],z16+z26+z36+z46+z56+z66=c[6]},NONNEGATIVE);

{z16 = 50, z61 = 14, z13 = 0, z14 = 0, z15 = 0, z55 = 0, z64 = 0, z65 = 0, z66 = 0, z56 = 0, z12 = 0, z31 = 0, z32 = 0, z33 = 0, z36 = 0, z41 = 0, z51 = 0, z54 = 0, z11 = 0, z21 = 0, z22 = 0, z25 = 0, z26 = 0, z35 = 0, z43 = 0, z44 = 0, z52 = 0, z62 = 0, z34 = 12, z46 = 10, z63 = 1, z45 = 50, z42 = 20, z23 = 6, z24 = 12, z53 = 15}

> assign(%);

>f3z:=Z[1,1]*z11+Z[1,2]*z12+Z[1,3]*z13+Z[1,4]*z14+Z[1,5]*z15+Z[1,6]*z16+Z[2,1]*z21+Z[2,2]*z22+Z[2,3]*z23+Z[2,4]*z24+Z[2,5]*z25+Z[2,6]*z26+Z[3,1]*z31+Z[3,2]*z32+Z[3,3]*z33+Z[3,4]*z34+Z[3,5]*z35+Z[3,6]*z36+Z[4,1]*z41+Z[4,2]*z42+Z[4,3]*z43+Z[4,4]*z44+Z[4,5]*z45+Z[4,6]*z46+Z[5,1]*z51+Z[5,2]*z52+Z[5,3]*z53+Z[5,4]*z54+Z[5,5]*z55+Z[5,6]*z56+Z[6,1]*z61+Z[6,2]*z62+Z[6,3]*z63+Z[6,4]*z64+Z[6,5]*z65+Z[6,6]*z66;

f3z := 5911/15

>[z11,z12,z13,z14,z15,z16];[z21,z22,z23,z24,z25,z26];[z31,z32,z33,z34,z35,z36];[z41,z42,z43,z44,z45,z46];[z51,z52,z53,z54,z55,z56];[z61,z62,z63,z64,z65,z66];f3z;

[0, 0, 0, 0, 0, 50]

[0, 0, 6, 12, 0, 0]

[0, 0, 0, 12, 0, 0]

[0, 20, 0, 0, 50, 10]

[0, 0, 15, 0, 0, 0]

[14, 0, 1, 0, 0, 0]

5911/15

(Новый план перевозок ставим в функцию цели первой транспортной задачи и таким образом получаем первое УПРАВЛЕНИЕ)

>f4z:=X[1,1]*z11+X[1,2]*z12+X[1,3]*z13+X[1,4]*z14+X[1,5]*z15+X[1,6]*z16+X[2,1]*z21+X[2,2]*z22+X[2,3]*z23+X[2,4]*z24+X[2,5]*z25+X[2,6]*z26+X[3,1]*z31+X[3,2]*z32+X[3,3]*z33+X[3,4]*z34+X[3,5]*z35+X[3,6]*z36+X[4,1]*z41+X[4,2]*z42+X[4,3]*z43+X[4,4]*z44+X[4,5]*z45+X[4,6]*z46+X[5,1]*z51+X[5,2]*z52+X[5,3]*z53+X[5,4]*z54+X[5,5]*z55+X[5,6]*z56+X[6,1]*z61+X[6,2]*z62+X[6,3]*z63+X[6,4]*z64+X[6,5]*z65+X[6,6]*z66;

f4z := 514

(Новый план перевозок ставим в функцию цели второй транспортной задачи и таким образом получаем второе УПРАВЛЕНИЕ)

>f5z:=Y[1,1]*z11+Y[1,2]*z12+Y[1,3]*z13+Y[1,4]*z14+Y[1,5]*z15+Y[1,6]*z16+Y[2,1]*z21+Y[2,2]*z22+Y[2,3]*z23+Y[2,4]*z24+Y[2,5]*z25+Y[2,6]*z26+Y[3,1]*z31+Y[3,2]*z32+Y[3,3]*z33+Y[3,4]*z34+Y[3,5]*z35+Y[3,6]*z36+Y[4,1]*z41+Y[4,2]*z42+Y[4,3]*z43+Y[4,4]*z44+Y[4,5]*z45+Y[4,6]*z46+Y[5,1]*z51+Y[5,2]*z52+Y[5,3]*z53+Y[5,4]*z54+Y[5,5]*z55+Y[5,6]*z56+Y[6,1]*z61+Y[6,2]*z62+Y[6,3]*z63+Y[6,4]*z64+Y[6,5]*z65+Y[6,6]*z66;

f5z := 257

(Новый план перевозок ставим в функцию цели третьей транспортной задачи и таким образом получаем третье УПРАВЛЕНИЕ)

> f6z:=V[1,1]*z11+V[1,2]*z12+V[1,3]*z13+V[1,4]*z14+V[1,5]*z15+V[1,6]*z16+V[2,1]*z21+V[2,2]*z22+V[2,3]*z23+V[2,4]*z24+V[2,5]*z25+V[2,6]*z26+V[3,1]*z31+V[3,2]*z32+V[3,3]*z33+V[3,4]*z34+V[3,5]*z35+V[3,6]*z36+V[4,1]*z41+V[4,2]*z42+V[4,3]*z43+V[4,4]*z44+V[4,5]*z45+V[4,6]*z46+V[5,1]*z51+V[5,2]*z52+V[5,3]*z53+V[5,4]*z54+V[5,5]*z55+V[5,6]*z56+V[6,1]*z61+V[6,2]*z62+V[6,3]*z63+V[6,4]*z64+V[6,5]*z65+V[6,6]*z66;

f6z := 257/3

рефераты
РЕФЕРАТЫ © 2010