Решение транспортной задачи методом потенциалов c

Решение транспортной задачи методом потенциалов c

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

Например, у нас есть сеть розничных магазинов, которым требуется определенное количество товаров. Также имеется ряд складов поставщиков, где требуемые товары хранятся. При этом на каждом складе различный объем запасов этих товаров. Кроме этого нам известны тарифы – затраты на перевозку 1 товара от каждого склада к каждому магазину.

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

Теоретический материал по транспортной задаче

Транспортная задача (задача Монжа — Канторовича) — математическая задача линейного программирования специального вида о поиске оптимального распределения однородных объектов из аккумулятора к приемникам с минимизацией затрат на перемещение.

Для простоты понимания рассматривается как задача об оптимальном плане перевозок грузов из пунктов отправления (например, складов) в пункты потребления (например, магазины), с минимальными общими затратами на перевозки.

Математическая модель транспортной задачи имеет следующий вид:

где: Z — затраты на перевозку грузов;
X — объем груза;
C — стоимость (тариф) перевозки единицы груза;
A — запас поставщика;
B — запрос потребителя;
m — число поставщиков;
n — число потребителей.

Общий план решения транспортной задачи методом потенциалов

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

Суть его в следующем: находим некий опорный план и проверяем его на оптимальность (Z → min). Если план оптимален – решение найдено. Если нет – улучшает план столько раз, сколько потребуется, пока не будет найден оптимальный план.

Ниже приведен алгоритм решения транспортной задачи в самом общем виде:

  1. Построение транспортной таблицы.
  2. Проверка задачи на закрытость.
  3. Составление опорного плана.
  4. Проверка опорного плана на вырожденность.
  5. Вычисление потенциалов для плана перевозки.
  6. Проверка опорного плана на оптимальность.
  7. Перераспределение поставок.
  8. Если оптимальное решение найдено, переходим к п. 9, если нет – к п. 5.
  9. Вычисление общих затрат на перевозку груза.
  10. Построение графа перевозок.

Подробная инструкция по решению транспортной задачи

1. Построение транспортной таблицы

Строим таблицу, где указываем запасы материалов, имеющиеся на складах поставщиков (Ai), и потребности заводов (Bj) в этих материалах.

В нижний правый угол ячеек таблицы заносим значение тарифов на перевозку груза (Cij).

2. Проверка задачи на закрытость

Обозначим суммарный запас груза у всех поставщиков символом A, а суммарную потребность в грузе у всех потребителей – символом B.

Транспортная задача называется закрытой, если A = B . Если же A ≠ B , то транспортная задача называется открытой. В случае закрытой задачи от поставщиков будут вывезены все запасы груза, и все заявки потребителей будут удовлетворены. В случае открытой задачи для ее решения придется вводить фиктивных поставщиков или потребителей.

Проверим задачу на закрытость:

A = 10 + 20 + 30 = 60

B = 15 + 20 + 25 = 60

A = B, следовательно данная транспортная задача – закрытая.

3. Составление опорного плана

Составляет предварительный (опорный) план перевозок. Он не обязательно должен быть оптимальный. Это просто своеобразный «черновик», «набросок», улучшая который мы постепенно придем к плану оптимальному.

Есть разные методы нахождения опорного плана. Наиболее распространены следующие:

Суть метода проста — ячейки транспортной таблицы последовательно заполняются максимально возможными объемами перевозок, в направлении сверху вниз и слева направо. То есть сперва заполняется самая верхняя левая ячейка ("северо-западная" ячейка), потом следующая справа и т.д. Затем переходят на новую строку и вновь заполняют ее слева направо. И так пока таблица не будет заполнена полностью.

Подробное описание метода и пример можно посмотреть здесь.

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

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

4. Проверка опорного плана на вырожденность

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

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

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

Ломаная линия может иметь точки самопересечения, но не в клетках цикла.

Кол-во базисных клеток = 5

m + n – 1 = 3 + 3 – 1 = 5

Следовательно, первоначальный план перевозок – невырожденный.

5. Вычисление потенциалов для плана перевозки

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

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

Читайте также:  Как вернуть некачественный планшет

Итак, сопоставим каждому поставщику Ai и каждому потребителю Bj величины Ui и Vj соответственно так, чтобы для всех базисных клеток плана было выполнено соотношение:

Ui + Vj = Cij

Добавим к транспортной таблице дополнительную строку и столбец для Ui и Vj.

Предположим, что U1 = 0.

Тогда мы сможем найти V3 = C13 – U1 = 1 – 0 = 1.

Зная V3, мы теперь можем найти U3:

По аналогии вычисляем все оставшиеся потенциалы:

6. Проверка плана на оптимальность методом потенциалов

Для каждой свободной клетки плана вычислим разности

ΔCij = Cij – (Ui + Vj )

и запишем полученные значения в левых нижних углах соответствующих ячеек.

План является оптимальным, если все разности ΔCij ≥ 0.

В данном случае план – неоптимальный (ΔC22 7. Перераспределение поставок

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

Отметим ячейку с отрицательной разностью ΔCij знаком «+», следующую знаком «-», и так далее, поочередно.

Затем находим минимальной значение груза в ячейках цикла имеющих знак «-» (здесь это 5) и вписываем его в свободную ячейку со знаком «+». Затем последовательно обходим все ячейки цикла, поочередно вычитая и прибавляя к ним минимальное значение (в соответствии со знаками, которыми эти ячейки помечены: где минус — вычитаем, где плюс — прибавляем).

Получим новый опорный план перевозок:

Так как базисных клеток стало больше, чем m + n – 1, то базисную клетку с нулевым значением делаем свободной:

Снова вычисляем значения потенциалов и разности ΔCij:

На этот раз все разности ΔCij ячеек положительные, следовательно, найдено оптимальное решение.

8. Если оптимальное решение найдено, переходим к п. 9, если нет – к п. 5.

У нас оптимальное решение найдено, поэтому переходим к пункту 9.

9. Вычисление общих затрат на перевозку груза

Вычислим общие затраты на перевозку груза (Z), соответствующие найденному нами оптимальному плану, по формуле:

Zmin = 10 ∙ 1 + 15 ∙ 3 + 5 ∙ 2 + 15 ∙ 1 + 15 ∙ 2 = 110 ден. ед.

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

10. Построение графа перевозок

Найдя оптимальный план перевозок, построим граф. Вершинами графа будут «склады» и «магазины». В вершинах укажем соответствующие объемы запасов и потребностей. Дугам, соединяющим вершины графа, будут соответствовать ненулевые перевозки. Каждую такую дугу подпишем, указав объем перевозимого груза.

В результате получится граф, аналогичный изображенному ниже:

Все, транспортная задача решена. Поздравляю!

Практическое применение транспортной задачи

Транспортная задача применяется во многих случаях. Это оптимизация поставок сырья и материалов на производственные предприятия. Это оптимизация доставок товаров со складов в розничные магазины. Это оптимизация пассажирских перевозок, и много-многое другое.

© Копирование материала допустимо только при указании прямой гиперссылки на источник: Галяутдинов Р.Р.

Пригодилась статья? Поделитесь с друзьями:

Библиографическая запись для цитирования статьи по ГОСТ Р 7.0.5-2008:
Галяутдинов Р.Р. Транспортная задача — решение методом потенциалов // Сайт преподавателя экономики. [2013]. URL: http://galyautdinov.ru/post/transportnaya-zadacha (дата обращения: 15.03.2020).

Нашли опечатку? Помогите сделать статью лучше! Выделите орфографическую ошибку мышью и нажмите Ctrl+Enter.

ФОРМУЛЫ —> ТЕРМИНЫ —> БУХУЧЕТ —> НАЛОГИ —> СТАТИСТИКА —> БИОГРАФИИ —> ЗАДАЧИ —> ENGLISH —>

ГАЛЯУТДИНОВ
Руслан Рамилевич

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

Рубрика: Информационные технологии

Дата публикации: 03.02.2019 2019-02-03

Статья просмотрена: 750 раз

Библиографическое описание:

Бевз Р. Ю. Наглядная программная реализация для решения транспортных задач методом потенциалов // Молодой ученый. — 2019. — №5. — С. 10-14. — URL https://moluch.ru/archive/243/56191/ (дата обращения: 15.03.2020).

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

Главное назначение Т-задачи — определить объем перевозок из пунктов отправления в пункты назначения с минимальной суммарной стоимостью перевозок.

Формулировка транспортной задачи представляет собой схему перевозок (рис. 1) и несколько условий, необходимые и достаточные, чтобы найти оптимальное решение. В общем виде она представляет собой следующую схему:

Рис. 1. Графическое представление транспортной задачи

Каждому пункту отправления соответствует количество поставляемого этим пунктом товара — , аналогично с пунктами назначения — . Формулами (1) и (2) обозначены основные условия для разрешимости Т-задачи.

(1)

(2)

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

Постановка Т-задачи, применяемая в обозреваемой программе имеет следующий вид: имеется множество пунктов отправления (3)

(3)

Множество пунктов назначения (4)

(4)

И матрица тарифов на перевозки между поставщиками и потребителями , зависящая от предыдущих двух множеств, и содержащая затраты на перевозку :

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

Разработка программы проводилась в среде Microsoft Visual Studio 2017 на языке программирования C#. Программа является полностью автономной (состоит из одного файла расширения.exe) и предоставляет пользователю классический, интуитивно понятный оконный интерфейс. Самой значимой частью программы, несомненно, является решение транспортных задач различных размерностей, включающее в себя два основных блока. Первый — это нахождения начального опорного плана методом северо-западного угла или минимального элемента, где пользователь может наглядно увидеть первичную матрицу перевозок. И второй — последующая оптимизация опорного плана методом потенциалов и вывод значения целевой функции.

Давайте найдем оптимальный опорный план для заданной Т-задачи. Предполагается, что пользователь ознакомлен с необходимой теорией. Заполнение полей производится в соответствии с заданными выше условиями.

Рис. 2. Заполнение полей условия Т-задачи

Рис. 3. Решение методом северо-западного угла

Рис. 4. Решение методом минимального элемента

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

Рис. 5. Один из вопросов теста

Рис. 6. Условие задачи, которая представлена в тесте

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

  1. Таха Х. А. Введение в исследование операций — 7-е издание.: Пер. с англ. — Москва: Издательский дом «Вильяме», 2005. — 912 с.
  2. Гольштейн Е. Г., Юдин Д. Б. Задачи линейного программирования транспортного типа — М.: Наука, ФИЗМАТЛИТ, 1969. — 384 с.
  3. Зайченко Ю. П. Исследование операций — Киев: Вища школа. Головное изд-во, 1979 г.
  4. Кнут Д., Искусство программирования на ЭВМ. 1-й том Основные алгоритмы. Учебное пособие. 3-е изд. — М.: Издательский дом “Вильямс”. — 2000. — 712с.

Похожие статьи

Решение транспортных задач с применением. | Молодой ученый

Одной из задач линейного программирования является транспортная задачазадача о наиболее

2. Составить алгоритм для реализации методов решения транспортных задач в MathCAD.

Транспортная задача — математическая задача линейного программирования.

Методы оптимального планирования в системах военного.

Основным, универсальным методом решения задач линейного программирования

2. Определим начальный опорный план , назначая перевозки способом «северозападного угла» в

Транспортная задача — математическая задача линейного программирования об.

Интерактивный подход к решению транспортной задачи.

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

Решение задачи методом многих масштабов. Решение транспортных задач с помощью линейного

Транспортная задачазадача об оптимальном плане перевозок продукта из пункта.

Решение транспортных задач с использованием свойств.

Транспортная задача — математическая задача линейного программирования об оптимальном

Целевая функция L= в рассматриваемой задаче стремится к минимуму.

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

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

Составим начальное опорное решение Х1 методом северозападного угла Максимум целевой функции

Транспортная задача — математическая задача линейного программирования об оптимальном плане перевозок грузов из пунктов отправления в.

Определение рациональных маршрутов доставки транспортных.

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

Декомпозиционный метод решения транспортной задачи.

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

Транспортная задачазадача об оптимальном плане перевозок продукта из пункта наличия в пункт потребления.

Формирование оптимальной производственной программы на.

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

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

Транспортная задача — математическая задача линейного программирования об оптимальном плане перевозок грузов из пунктов отправления в пункты потребления с минимальными затратами. Условие этой задачи таково. Решение транспортной задачи с.

1. Проверим, является ли данная задача замкнутой.

Подсчитаем суммарные запасы груза и суммарные потребности заказчиков

, .

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

2. Построим первый опорный план транспортной задачи методом северо-западного угла.

Начинаем заполнение распределительной таблицы с верхней левой клетки, то есть построение исходного опорного плана начинаем с удовлетворения потребностей первого потребителя b1 за счет запасов первого поставщика a1. Для этого сравниваем запас a1 = 200 с потребностями b1 = 150. Так как a1 > b1, то потребности b1 полностью удовлетворяем за счет a1, и в первую клетку помещаем min (200, 150)=150. У первого поставщика осталось 50 единиц груза. Так как потребности первого получателя груза полностью удовлетворены, исключим из рассмотрения первый столбец, заполнив в нем оставшиеся клетки точками. Далее заполняем таблицу по строкам слева направо и сверху вниз. Следующая самая верхняя левая незаполненная клетка – (1,2). Потребителю b2 поставляем 50 единиц груза, оставшихся у первого поставщика. Поскольку от первого поставщика весь груз вывезен, заполняем оставшиеся клетки первой строки точками. Второму получателю, пока что, недопоставлено 80 единиц груза. Следующая незаполненная клетка – (2,2). Потребителю b2 отправляем недостающие 80 единиц груза, при этом его потребности полностью удовлетворены, поэтому оставшиеся клетки во втором столбце заполняем точками. У второго поставщика a2 осталось еще 100 единиц груза. Аналогичным образом заполняем оставшиеся клетки, пока не удовлетворим всех потребителей и не вывезем все запасы груза у поставщиков.

В результате распределения груза получим первый опорный план, в котором x11 = 150, x12 = 50, x22 = 80, x23 = 100, x33 = 50, x34 = 140. Эти переменные соответствуют заполненным клеткам и являются базисными, остальные переменные, соответствующие клеткам с точками, являются свободными (значения свободных переменных равны нулю). Первый опорный план можно представить в матричном виде

Число заполненных клеток k = 6. Это число должно равняться рангу системы ограничений r = m + n – 1 = 3 + 4 – 1 = 6. Так как k = r = 6, то построенный план является невырожденным. Подсчитаем затраты на перевозку по этому плану

.

3. Построим первое опорное решение транспортной задачи методом минимальной стоимости (минимального тарифа).

Найдем клетку с минимальным тарифом. Это клетка (1,3) с тарифом

C13 =1. Построение исходного опорного плана начинаем с занесения поставки груза в клетку с наименьшей стоимостью c13. Заполняем клетку x13 = 150. Оставшиеся клетки третьего столбца заполняем точками, так как потребности третьего получателя полностью удовлетворены. У первого поставщика осталось 50 единиц груза. Ищем следующую клетку с минимальным тарифом. Таких клеток две: c14 =2, c32 =2. Заполним сначала клетку (3,2). Поставим в нее x32=min (190, 130)=130. Второй столбец заполняем точками. У третьего поставщика осталось 60 единиц груза. Ищем следующую клетку с наименьшим тарифом – это клетка (1,4). В нее помещаем 50 единиц груза, min(50,140)=50. Первую строку заполняем точками, так как от первого поставщика вывезен весь груз. Четвертому получателю недопоставлено 90 единиц. Аналогичным образом распределяем весь имеющийся груз и получаем первый опорный план перевозок.

Подсчитаем затраты на перевозку по этому плану.

.

Итак, в каждой строке и в каждом столбце таблицы заполнена хотя бы одна клетка, циклов по заполненным клеткам нет, число заполненных клеток m+n-1=6, следовательно, план опорный и невырожденный.

4. Проверка первого опорного плана (решения) на оптимальность. Метод потенциалов

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

В таблице в дополнительном столбце справа помещаем потенциалы отправителей , а в строке снизу – потенциалы получателей. Составим систему уравнений для определения потенциалов:

Из этой системы находим

Считаем оценки для свободных клеток:

Запишем получившиеся оценки в левом верхнем углу свободных клеток.

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

Сроим цикл пересчета, начиная с клетки (3,3), в которую нужно поместить поставку груза (её отмечают знаком «+»), и двигаясь по занятым клеткам (в данном случае это клетки (3,4), (1,4), (1,3)), поочередно отмечая их знаками «-», «+». Если в клетку (3,3) добавили +, то в смежных по циклу клетках необходимо вычесть для сохранения баланса перевозок по третьей строке и третьему столбцу. Звенья цикла должны быть параллельны строкам или столбцам таблицы, причем в каждой вершине цикла встречаются ровно два звена, одно из которых находится в строке, а другое – в столбце. Количество вершин в цикле должно быть четно. В результате построения цикла в соответствующих строках и столбцах должно быть парное количество знаков «-», «+».

Определяем величину поставки в клетку (3,3), как минимальную величину из поставок, стоящих в отрицательных клетках, то есть . Перераспределяем по циклу поставки на величину . Значение записываем в незанятую клетку (3,3), отмеченную знаком «+», двигаясь по циклу, прибавляем эту величину к поставкам в клетках со знаком «+», вычитаем в клетках со знаком «-».

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

Если освобождается больше одной клетки, то есть число заполненных клеток меньше числа m + n — 1, то такой план называется вырожденными, и для определения потенциалов необходимо ввести недостающее количество нулевых элементов в число основных базисных переменных. Свободные клетки заполняют нулевыми поставками так, чтобы они не образовывали цикл по заполненным клеткам, и чтобы в каждой строке и в каждом столбце находилась хотя бы одна заполненная клетка. Проверим новый опорный план на оптимальность. Пусть =0. Тогда найдем все остальные потенциалы, рассматривая только заполненные клетки и помня, что для них , то есть что сумма потенциалов должна быть равна тарифу, стоящему на пересечении соответствующих потенциалам строки и столбца.

Число заполненных клеток k=m+n-1, следовательно, план невырожденный. Найдем оценки Для всех клеток с точками, где стоят свободные переменные. Данный опорный план не является оптимальным, так как не все оценки для свободных клеток , а именно, .

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

Ищем количество единиц груза , перераспределяемых по циклу пересчета, как минимум по клеткам, помеченных знаком минус. Получаем новый опорный план

Проверяем данный опорный план на оптимальность

Полученный опорный план является оптимальным, так как все оценки для свободных клеток . Выписываем оптимальный план: x11 = 0; x12 = 0; x13 = 60; x14 =140; x21 = 150; x22 = 30; x23 = 0; x24 = 0; x31 = 0; x32 = 100; x33 = 90; x34 = 0. Или в матричной форме

Высчитываем минимальные затраты на транспортировку продукции:

Ссылка на основную публикацию
Регулятор громкости для автомагнитолы
Бывший хозяин видимо пытаясь снять магнитолу за рукоятку громкости, сломал её. В результате громкость не регулировалась, а отпаявшиеся контакты энкодера...
Работа с far manager
Фар менеджер - один из самых удобных файловых менеджеров, рассчитанный на работу с файлами и папками на дисках, прежде всего,...
Работа с классами python
Серия контента: Этот контент является частью # из серии # статей: Этот контент является частью серии: Следите за выходом новых...
Регулярные выражения perl примеры
Regular expressions, или регулярные выражения - способ определения символьной маски для последующего сравнения с ней строки символов или для обработки...
Adblock detector