- •Содержание
- •Введение
- •1 Постановка задачи оптимизации закупки топлива авиакомпанией
- •1.1 Качественное описание задачи
- •1.2 Концептуальная модель задачи
- •1.3 Математическая постановка задачи
- •2 Алгоритмизация решения задачи оптимизации закупки топлива авиакомпанией
- •2.1 Методы нахождения опорного и оптимального решения транспортной задачи
- •2.2 Описание венгерского метода нахождения оптимального плана
- •2.3 Описание алгоритма нахождения опорного плана методом северо-западного угла
- •2.4 Описание алгоритма нахождения оптимального плана распределительным методом
- •2.5 Проектирование сценария диалога
- •2.6 Описание структур данных
- •2.7 Описание программной системы «Оптимизация закупки топлива авиакомпанией»
- •2.8 Структурная схема сценария диалога и описание его программной реализации
- •2.9 Структурная схема алгоритмов метода северо-западного угла и распределительного и описание их программной реализации
- •2.10 Структурная схема алгоритмов ведения файловых архивов, графического представления результатов и их программная реализация
- •3. Численные эксперименты
- •3.1 Ручная реализация метода северо-западного угла и распределительного
- •3.2 Ручная реализация венгерского метода
- •3.3 Машинные эксперименты с программной системой
- •3.4 Качественная интерпретация полученных результатов
- •Заключение
1 Постановка задачи оптимизации закупки топлива авиакомпанией
1.1 Качественное описание задачи
Самолеты авиакомпании совершают регулярно рейсы в n=5 аэропортов В1, В2,..., В5(=1). Поставку топлива для самолетов осуществляют m=6 нефтяных компаний А1 , А2,..., А6 (α=1). В течение месяца нефтяные компании могут поставить следующее количество топлива: а1– компания А1; a2 – компания А2; a6 - компания А6. Авиакомпании требуется следующее количество топлива: b1 – в аэропорту В1 ; b2 – в аэропорту В2; b5 – в аэропорту В5. Стоимости единицы реактивного топлива с учетом расходов, связанных с доставкой, представлены в виде матрицы || Сij ||, где Сij – стоимость поставки единицы топлива Аi-й компанией в Вj-й аэропорт; i=1, 6; j=1, 5. Необходимо определить количество топлива, закупаемого авиакомпанией у каждой нефтяной компании, минимизирующее общие затраты на закупку топлива.
Исходные данные:
A={5,18,30,12,60,35}, m=6
B={10,40,30,55,25}, n=5
1.2 Концептуальная модель задачи
Данная задача сводится к концептуальной модели транспортной задачи.
Пусть в пунктах А1, А2, …, Аm производят некоторый однородный продукт, причем объем производства в пункте Аi составляет ai единиц (i = 1, ..., m). Предполагается, что данный продукт потребляют в пунктах B1, B2, …, Bn, а объем потребления в пункте Вj составляет bj единиц (j = 1, …, n).
Считается, что из каждого пункта производства возможна транспортировка продукта в любой пункт потребления. Транспортные издержки по перевозке из пункта Аi в пункт Вj единицы продукции равны cij (i = 1, ..., m, j = 1, …, n).
Задача состоит в определении такого плана перевозок, при котором запросы всех потребителей полностью удовлетворены, весь продукт из пунктов производства вывезен и суммарные транспортные издержки минимальны.
1.3 Математическая постановка задачи
Пусть дано множество ресурсов поставщиков A={a1, … ai, … am} i=1,m; а также множество нужд потребителей B={b1, … bj, … bn} j=1,n. Задана матрица стоимостей C=||cij||, где cij – стоимость перевозки единицы товара от i-того поставщика j-тому потребителю. В качестве множества параметров оптимизации вводится матрица перевозок X=||xij||, xij – количество товара, поставленного от i-того поставщика j-тому потребителю. Тогда задача сводится к минимизации критерия эффективности (размера издержек) L, который имеет вид:
(1.1);
При заданных ограничениях вида:
(1.2);
(1.3);
(1.4);
Ограничения (1.2) показывают, что каждый поставщик должен полностью распределить свой запас между потребителями. Ограничения (1.3) отражают необходимость полного удовлетворения потребностей каждого потребителя за счёт ресурсов поставщиков. Ограничения (1.4) указывают на то, что товар, будучи реальным объектом, не может принимать отрицательные значения
2 Алгоритмизация решения задачи оптимизации закупки топлива авиакомпанией
2.1 Методы нахождения опорного и оптимального решения транспортной задачи
Транспортная задача является специальной задачей условного линейного программирования из-за специфического построения системы ограничений, которое делает решение данной задачи обычными методами линейного программирования (как геометрический или симплекс-метод) нерациональным.
Перед началом решения задачи производится проверка на её сбалансированность. Транспортная задача называется сбалансированной, если выполняется условие вида:
(2.1)
Где ai – запас i-того поставщика;
bj - потребность j-того потребителя.
Если же условие (2.1) не выполняется, то задача называется несбалансированной (открытой). Решение несбалансированных задач состоит в сведении их к сбалансированным. Если в задаче суммарные нужды потребителей превышают суммарные ресурсы поставщиков, то добавляется фиктивный поставщик am+1, ресурс которого равен разности суммарных нужд потребителей и суммарных ресурсов поставщиков, при этом в матрицу стоимостей добавляется нулевая строка. Если в задаче суммарные нужды потребителей меньше суммарных ресурсов поставщиков, то добавляется фиктивный потребитель bn+1, ресурс которого равен разности суммарных ресурсов поставщиков и суммарных нужд потребителей, при этом в матрицу стоимостей добавляется нулевой столбец.
Решение транспортной задачи происходит в два этапа: сначала производится нахождение опорного плана, затем ищется оптимальный план. Основными методами нахождения опорного плана являются метод северо-западного угла, метод наименьшей стоимости, а также метод штрафов (метод Фогеля).
В методе северо-западного угла сначала строится нулевая матрица размером n*m. Начиная с северо-западного угла в естественном порядке осуществляется заполнение матрицы. Заполнение осуществляется по следующему правилу: для каждого элемента выбирается минимальное число из соответствующих ему значений вектора производства и потребления; это минимальное число вычитается из соответствующих данному элементу значений векторов производства и потребления. Так как при корректировке один из элементов, либо а, либо b, становится равным нулю, то соответствующая строка или столбец исключаются в дальнейшем из рассмотрения. Процесс заполнения продолжается до тех пор, пока все элементы векторов производства и потребления не станут равными нулю. Проверяется вырожденность полученного плана. Данный метод является простейшим в ручной и программной реализации, однако из-за того, что стоимости перевозок в данном методе не учитываются, полученное опорное решение является далёким от оптимального.
В методе наименьшей стоимости производится индексирование матрицы стоимости в порядке возрастания. Согласно индексам, полученным на 1-ом этапе производится заполнение элементов опорного плана. При этом элементы и правила коррекций вычисляются также как и метод северо-западного угла. Данный метод даёт решение более оптимальное, чем метод северо-западного угла, однако при решении открытых задач, сведённых к закрытым, возникают трудности с фиктивными элементами, которая решается их игнорированием, пока доступны реальные.
В методе Фогеля штрафы для строки или столбца представляет положительную разницу между минимальном элементом строки(столбца) и следующим за ним по величине минимальным элементом строки или столбца. Рассчитываются штрафы для всех строк и столбцов матрицы. Заполнение опорного плана начинается с минимального элемента строки или столбца с максимальным штрафом. Выбор элементов плана Х и коррекция векторов потребления и постановок осуществляется как рассмотрено выше. Строка или столбец матрицы С, которым соответствует нулевое значение потребности или поставки при дальнейшем вычислении не участвуют в формировании штрафов. Процесс продолжается до тех пор, пока не обнулятся все вектора. Данный метод является наилучшим из перечисленных, потому что он даёт решение, близкое к оптимальному.
После нахождения опорного плана он проверяется на вырожденность. План называется невырожденным, если количество его ненулевых (базисных) элементов равно сумме количества поставщиков и количества потребителей, уменьшенная на единицу. Если же количество таких элементов меньше данного значения, то план вырожден, и нужно добавлять базисные нули. Рекомендуется помечать те элементы как базисные, в строке и столбце которых находится не более одного базисного элемента.
На этапе нахождения оптимального решения происходит проверка опорного решения на оптимальность по определённой методике. Если опорный план оказывается неоптимальным, то он модифицируется определённым образом, и полученный план снова проверяется на оптимальность. Данная процедура ведётся до построения оптимального решения. Существует два метода построения оптимального решения из опорного: распределительный метод и метод потенциалов.
Нахождение оптимального решения по распределительному методу состоит в построении так называемых означенных циклов пересчёта для каждого свободного элемента. Означенный цикл пересчёта - замкнутая последовательность элементов, содержащая один свободный и базисные элементы, в которой поочерёдно, начиная со свободного элемента, проставляются знаки «плюс», «минус». После этого для каждого цикла высчитывается его цена – разность суммарной стоимости элементов с «плюсом» и суммарной стоимости элементов с «минусом». Если цена всех циклов неотрицательная, тогда план признаётся оптимальным, в противном случае он модифицируется, и анализ циклов производится заново. Главное преимущество метода заключается в простоте его реализации, недостаток же его в том, что нужно провести очень большое количество итераций для получения оптимального решения.
Общая схема метода потенциалов состоит в следующем. В данном начальном опорном плане каждому пункту ставят в соответствие некоторое число, называемое его предварительным потенциалом. Предварительные потенциалы выбирают так, чтобы их сумма (также называемую псевдостоимостью элемента) для любой пары пунктов Аi и Вj, базисным элементом, были равна cij. Если окажется, что разность предварительных потенциалов для всех свободных элементов не превосходит cij, то данный план перевозок – оптимальное решение задачи. В противном случае указывают способ улучшения опорного плана транспортной задачи. В плане достижения оптимального решения данный метод лучше, так как он содержит меньше вычислений, чем распределительный метод, однако возникает проблема в его автоматизации, так как сложно запрограммировать формирование и решение системы линейных алгебраических уравнений потенциалов.
Наряду с этими методами существует венгерский метод, который не требует нахождения опорного плана. Его суть состоит в последовательном преобразовании матрицы стоимостей С и матрицы перевозок Х при помощи нулевых цепочек, построенных по определённым правилам. Главное преимущество данного метода состоит в быстром построении решения для больших матриц по отношению к остальным методам. Главными недостатками метода являются запутанность метода и чрезвычайная сложность его автоматизации.
