САНКТ-ПЕТЕРБУРГСКИЙ ГОСУДАРСТВЕННЫЙ УНИВЕРСИТЕТ
Прикладная математика и информатика
Исследование операций и принятие решений в задачах оптимизации,
управления и экономики.
Прохорова Ксения Николаевна
Моделирование обработки комплексного сырья в задачах ЛП
Бакалаврская работа
Научный руководитель:
д. ф.-м. н., профессор Романовский И. В.
Рецензент:
к. ф.-м. н., инженер Сурин С. С.
Санкт-Петербург
2016
SAINT PETERSBURG STATE UNIVERSITY
Applied Mathematics and Computer Science
Operation Research and Decision Making in Optimisation, Control and
Economics Problems
Prokhorova Ksenia
Modelling complex raw material treatment in LP problems
Bachelor’s Thesis
Scientific supervisor:
Professor Romanovsky J. V.
Reviewer:
Engineer Surin S. S.
Saint Petersburg
2016
Содержание
1
Введение
4
2
Введение в предметную область
5
3
Цель
7
4
Основная часть
8
4.1 Постановка задачи в диссертации . . . . . . . . . . . . . . . 8
4.2 Модель для сравнения . . . . . . . . . . . . . . . . . . . . . 11
4.3 Сравнение . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
5
Заключение
15
A Фракции
17
B Программа на R для модели для сравнения
19
C Программа на R для упрощенной модели
21
3
1
Введение
Моделирование применяется во многих областях и служит мощным
аппаратом для исследования процессов или объектов.
При разработке модели должны учитываться все факторы, существенно влияющие на конечный результат, поэтому чтобы полученный
результат был верным, необходимо подробно изучить объект моделирования.
Для того чтобы продемонстрировать насколько важен данный аспект
при разработке моделей была написана данная работа. Идея создания
возникла после того, как мой научный руководитель И. В. Романовский, в ходе написания рецензии на докторскую диссертацию, обнаружил ошибку в используемой в диссертации модели. В связи с этим была
поставлена задача, предостеречь читателя от ошибок подобного рода.
В качестве показательного примера, в работе рассматривается многоиндексная задача переработки комплексного сырья. К ней строится
модель для сравнения и разбирается, что происходит в том и другом
случаях.
4
2
Введение в предметную область
В качестве комплексного сырья в работе так же, как и в диссертации,
будет рассматриваться газовый конденсат.
«Газовый конденсат — это смесь жидких углеводородов, отделившихся от газа. Он образуется, когда давление и температура снижаются в
результате бурения скважины». [3]
Переработка природных горючих газов осуществляется на газоперерабатывающих заводах. «Предварительно газы очищают от мехпримесей
(частиц пыли, песка, окалины и т.д.), осушают и очищают от сероводорода и углекислого газа. Продуктами первичной переработки природных
горючих газов являются газовый бензин, сжиженные и сухие газы, технические углеводороды: этан, пропан, бутаны, пентаны». [2]
«Фракционный и углеводородный состав газового конденсата варьирует в широком диапазоне и зависит от условий залегания, отбора и времени эксплуатации залежи. Наиболее распространены газовые конденсаты с преобладанием метановых при значительной доле нафтеновых углеводородов (метано-нафтеновый тип). Редко встречаются газовые конденсаты, состоящие главным образом из ароматических или нафтеновых
углеводородов». [4]
«Основными направлениями в переработке газового конденсата являются нефтехимическое и топливное. При нефтехимической переработке
получают ароматические углеводороды, олефины и другие мономеры,
которые используются для производства пластмасс, синтетических каучуков, волокон и смол. Топливное направление представляет собой производство высококачественных бензинов, реактивного, дизельного и котельного топлив». [3]
Продукты, получаемые при переработке, описаны в приведенной ниже таблице 1.
Данная таблица упрощена и показывает только виды готовой продукции. На деле, ацетилен и технический углерод получают из метана под
действием окислительного пиролиза, а при помощи парового риформинга получают синтез-газ, из которого, в свою очередь, производятся метанол, формальдегид, мочевина, водород, диметиловый спирт, бензиновая
фракция, дизельное топливо и твердые парафины. При помощи дегидрирования из этана получают этилен, из пропана — пропилен, а из бутанов — бутены. Все виды готовой продукции этана производят из этилена; полипропилен, изопропиловый и пропиловый спирты из пропилена;
5
бутадиеновый каучук, бутиловый спирт и МТБЭ из бутенов.
Таблица 1: Виды конечных продуктов, получаемых при переработке попутного газа
Разделение
Метан
Этан
Ацетилен
Этилбензол
Технический
углерод
Окись этилена
Метанол
Полиэтилен
Формальдегид
Этиловый
спирт
Мочевина
Пропан
Бутаны
Моторное
и бытовое
топливо
Компонент
моторного
топлива
Полипропилен
Бутадиеновый каучук
Изопропиловый спирт
Пропиловый
спирт
Водород
Диметиловый
эфир
Бензиновая
фракция,
дизельное
топливо,
твердые
парафины
6
Бутиловый
спирт
МТБЭ
3
Цель
Цель данной работы — показать, к чему приводит непринятие в расчет важных деталей при моделировании. Для этого будет рассмотрена
диссертация [1], а в ней важный пример предлагаемой автором методики использования транспортной задачи: многоиндексная задача распределения ресурсов — «Объемно-календарное планирование переработки
газового конденсата».
В своей работе автор методологически, с нашей точки зрения, неверно подходит к решению многоиндексной задачи распределения ресурсов,
сводя её к транспортной задаче. В результате получаются «оптимальные» решения, которые на самом деле дают рекомендации по неправильному использованию сырья. А именно: сырье разделяется на части,
после чего из каждой из них производятся конечные продукты, а неиспользуемые остатки в каждом из вариантов выбрасываются.
Это происходит потому, что единица объема газового конденсата в
определенных пропорциях содержит метан, этан, пропан и бутаны. Поэтому, когда неразделенное на фракции сырье попадает на установку,
которая может производить, к примеру, продукты состоящие только из
бутана, то естественно, что перерабатываться будет только содержащийся в поступившем сырье процент бутана. Переработку неиспользованных
фракций модель не предусматривает.
7
4
4.1
Основная часть
Постановка задачи в диссертации
В [1] рассматривается модель переработки газового конденсата. Она
представляет из себя производственную систему, в которой из сырья,
под воздействием технологических режимов, изготавливаются продукты производства. Эта система функционирует следующим образом: сырье поступает в емкости резервуарного парка, откуда по трубопроводам
отправляется на технологические установки, где под воздействием технологических процессов производятся конечные продукты.
Имеются ограничения на объемы емкостей, производительность технологических установок, а также спрос на продукты производства для
каждого потребителя.
Требуется определить, каким образом осуществлять производство и
поставку продуктов потребителям с учетом всех ограничений, так, чтобы
система функционировала наиболее эффективно. Условия эффективности формализуются в виде критериев оптимальности.
Таким образом, рассматривается задача ЛП с ограничениями:
∑︁ ∑︁ ∑︁ ∑︁
𝑗
−
𝐵𝑗𝑘
6
𝑘
∑︁ ∑︁
𝑝
𝑥𝑖𝑗𝑘𝑝𝑡 6 𝐴𝑖 ,
(1)
𝑖 ∈ 𝐼,
𝑡
(2)
+
𝑥𝑖𝑗𝑘𝑝𝑡 6 𝐵𝑗𝑘
,
𝑗 ∈ 𝐽,
+
𝑥𝑖𝑗𝑘𝑝𝑡 6 𝐶𝑝𝑡𝑘
,
𝑘 ∈ 𝐾,
𝑝 ∈ 𝑃,
𝑡 ∈ 𝑇,
(3)
𝑘 ∈ 𝐾,
𝑝 ∈ 𝑃,
𝑡 ∈ 𝑇,
(4)
𝑘 ∈ 𝐾,
𝑡 ∈ 𝑇,
𝑖∈𝐼 𝑝∈𝑃
−
𝐶𝑝𝑡𝑘
6
∑︁ ∑︁
𝑖∈𝐼 𝑗∈𝐽
𝑥𝑖𝑗𝑘𝑝𝑡 > 0,
𝑖 ∈ 𝐼,
𝑗 ∈ 𝐽,
где 𝐼 — множество емкостей под сырье;
𝐽 — множество технологических установок;
𝑃 — множество потребителей готовой продукции;
𝑇 — множество тактов планирования;
𝐴𝑖 — максимальная вместимость емкости 𝑖;
−
+
𝐵𝑗𝑘
и 𝐵𝑗𝑘
— минимальная и максимальная производительность технологической установки 𝑗 по продукции 𝑘 ;
−
+
и 𝐶𝑝𝑡𝑘
–– минимально возможный и максимально требуемый для
𝐶𝑝𝑡𝑘
потребителя 𝑝 в такт 𝑡 объемы продукта 𝑘 ,
8
𝑖 ∈ 𝐼, 𝑗 ∈ 𝐽, 𝑘 ∈ 𝐾, 𝑝 ∈ 𝑃 , 𝑡 ∈ 𝑇 ;
𝑥𝑖𝑗𝑘𝑝𝑡 — объем сырья, который из емкости 𝑖 поступает на установку 𝑗
для изготовления продукта 𝑘 , который будет отправлен потребителю 𝑝
в такт 𝑡.
Критерий оптимальности зависит от различных экономических показателей плана, определяющихся следующими параметрами:
𝑎𝑘𝑝𝑡 — ожидаемый доход от реализации единицы продукции 𝑘 потребителем 𝑝 в такт 𝑡;
𝑏𝑗𝑘 — затраты технологической установки 𝑗 на переработку сырья в продукцию 𝑘 ;
𝑐𝑖𝑗 — затраты на перемещение единицы сырья из емкости 𝑖 в технологическую установку 𝑗 ;
𝑑𝑡 — ожидаемая стоимость сырья в такт 𝑡;
𝑒𝑘𝑝 — затраты на доставку единицы готовой продукции к потребителю 𝑝.
Тогда задача максимизации суммарного дохода предприятия от реализации продукции заключается в определении такого плана 𝑥𝑖𝑗𝑘𝑝𝑡 , 𝑖 ∈ 𝐼 ,
𝑗 ∈ 𝐽 , 𝑘 ∈ 𝐾 , 𝑝 ∈ 𝑃 , 𝑡 ∈ 𝑇 , для которого выполняются ограничения (1) —
(4) и принимает оптимальное значение критерий:
∑︁ ∑︁ ∑︁
∑︁ ∑︁
𝑎𝑘𝑝𝑡
𝑥𝑖𝑗𝑘𝑝𝑡 → max .
𝑝
𝑘
𝑡
𝑖
𝑗
Задача минимизации суммарных затрат технологических установок
на переработку сырья в готовую продукцию заключается в определении
такого плана 𝑥𝑖𝑗𝑘𝑝𝑡 , 𝑖 ∈ 𝐼 , 𝑗 ∈ 𝐽 , 𝑘 ∈ 𝐾 , 𝑝 ∈ 𝑃 , 𝑡 ∈ 𝑇 , для которого
выполняются ограничения (1) —(4) и принимает оптимальное значение
критерий:
∑︁ ∑︁
∑︁ ∑︁ ∑︁
𝑏𝑗𝑘
𝑥𝑖𝑗𝑘𝑝𝑡 → min .
𝑗
𝑘
𝑖
𝑝
𝑡
Задача минимизации суммарных затрат на перемещение сырья из емкостей в технологические установки заключается в определении такого
плана 𝑥𝑖𝑗𝑘𝑝𝑡 , 𝑖 ∈ 𝐼 , 𝑗 ∈ 𝐽 , 𝑘 ∈ 𝐾 , 𝑝 ∈ 𝑃 , 𝑡 ∈ 𝑇 , для которого выполняются
ограничения (1) —(4) и принимает оптимальное значение критерий:
∑︁ ∑︁ ∑︁ ∑︁ ∑︁
𝑐𝑖𝑗
𝑥𝑖𝑗𝑘𝑝𝑡 → min .
𝑖
𝑗
𝑘
𝑝
𝑡
9
Задача минимизации суммарных затрат на закупку предприятием
сырья заключается в определении такого плана 𝑥𝑖𝑗𝑘𝑝𝑡 , 𝑖 ∈ 𝐼 , 𝑗 ∈ 𝐽 , 𝑘 ∈
𝐾 , 𝑝 ∈ 𝑃 , 𝑡 ∈ 𝑇 , для которого выполняются ограничения (1) —(4) и
принимает оптимальное значение критерий:
∑︁ ∑︁ ∑︁ ∑︁ ∑︁
𝑥𝑖𝑗𝑘𝑝𝑡 → min .
𝑑𝑡
𝑡
𝑖
𝑗
𝑝
𝑘
Задача минимизации суммарных затрат на доставку предприятием
готовой продукции потребителям заключается в определении такого плана 𝑥𝑖𝑗𝑘𝑝𝑡 , 𝑖 ∈ 𝐼 , 𝑗 ∈ 𝐽 , 𝑘 ∈ 𝐾 , 𝑝 ∈ 𝑃 , 𝑡 ∈ 𝑇 , для которого выполняются
ограничения (1) —(4) и принимает оптимальное значение критерий:
∑︁ ∑︁ ∑︁
∑︁ ∑︁
𝑥𝑖𝑗𝑘𝑝𝑡 → min .
𝑒𝑘𝑝
𝑘
𝑝
𝑖
𝑡
𝑗
Задача максимизации суммарной прибыли предприятия заключается
в определении такого плана 𝑥𝑖𝑗𝑘𝑝𝑡 , 𝑖 ∈ 𝐼 , 𝑗 ∈ 𝐽 , 𝑘 ∈ 𝐾 , 𝑝 ∈ 𝑃 , 𝑡 ∈ 𝑇 , для
которого выполняются ограничения (1) —(4) и принимает оптимальное
значение критерий:
∑︁ ∑︁ ∑︁ ∑︁ ∑︁
(𝑎𝑘𝑝𝑡 − 𝑏𝑗𝑘 − 𝑐𝑖𝑗 − 𝑑𝑡 − 𝑒𝑘𝑝 )𝑥𝑖𝑗𝑘𝑝𝑡 → min .
𝑖
𝑗
𝑘
𝑝
𝑡
Все задачи рассматривались, как задачи транспортного типа, а значит подразумевалось, что состав сырья однороден. Поскольку на деле
это не так, то полученные результаты будут неверны.
Построим модель для сравнения. Не умаляя общности, будем проводить сравнение с задачей максимизации суммарного дохода предприятия
от реализации продукции.
10
4.2
Модель для сравнения
Сделаем упрощения в условиях задачи максимизации суммарного дохода предприятия от реализации продукции: будем считать, что для каждого вида готовой продукции 𝑘 существует только один потребитель 𝑝.
Более того, нам не важно из какой емкости было взято сырьё и в какой
именно такт времени, а также опустим удовлетворение минимально возможного объема готового продукта, ограничившись только максимально требуемым. Кроме того, ограничим объем сырья, который доступен
на данный момент фиксированным значением 𝑉 𝑎𝑙, вместо ограничения
максимальной вместимостью емкости.
Введем множество фракций 𝐿 и учтем факт неоднородности сырья:
обозначим через 𝑟𝑎𝑡𝑙 отношение фракции к общему объему сырья и ограничим объем готовых продуктов, производимых из этой фракции значением 𝑟𝑎𝑡𝑙 · 𝑦𝑙 , где 𝑦𝑙 — выделенная на технологическую установку 𝑙 часть
сырья. Будем считать, что каждой фракции 𝑙 соответствует только одна
технологическая установка 𝑗 , в связи с чем опустим множество технологических установок 𝐽 , отождествив его с множеством фракций.
⋃︀
Также
введем
подмножества
готовой
продукции
𝐾
:
𝐾𝑙 = 𝐾,
𝑙
′ ⋂︀
′′
′
′′
′
′′
𝐾𝑙 𝐾𝑙 = ∅, для любых 𝐾𝑙 , 𝐾𝑙 : 𝐾𝑙 ̸= 𝐾𝑙 , т. e. объединение этих
подмножеств дает все множество 𝐾 , а попарные пересечения пусты. Это
означает, что каждая группа продуктов соответствует своей фракции и
из этой фракции другие виды продуктов не могут быть произведены.
Тогда задача принимает вид:
∑︁ ∑︁
𝑎𝑘 𝑥𝑘𝑙 → max,
𝑙∈𝐿 𝑘∈𝐾𝑙
при ограничениях:
∑︁
(5)
𝑦𝑙 6 𝑉 𝑎𝑙,
𝑙∈𝐿
∑︁
𝑥𝑘𝑙 6 𝑟𝑎𝑡𝑙 · 𝑦𝑙 ,
𝑙 ∈ 𝐿,
(6)
𝑘 ∈ 𝐾𝑙 .
(7)
𝑘∈𝐾𝑙
𝑥𝑘𝑙 6 𝐶𝑘+ ,
𝑙 ∈ 𝐿,
Сравним эту модель с другой, учитывающей неоднородный состав сырья. Здесь подразумевается, что изначально все сырье мы разделяем на
11
фракции и отправляем эти части на соответствующие технологические
установки для производства готовой продукции. Таким образом, имеем
ограничение:
∑︁
𝑥𝑘𝑙 6 𝐹𝑙 , 𝑙 ∈ 𝐿,
𝑘∈𝐾𝑙
где 𝐹𝑙 — объём 𝑙-й фракции.
А модель для сравнения принимает вид:
∑︁ ∑︁
𝑎𝑘 𝑥𝑘𝑙 → max,
𝑙∈𝐿 𝑘∈𝐾𝑙
при ограничениях:
∑︁
𝑥𝑘𝑙 6 𝐹𝑙 ,
𝑙 ∈ 𝐿,
(8)
𝑘∈𝐾𝑙
𝑥𝑘𝑙 6 𝐶𝑘+ ,
𝑙 ∈ 𝐿,
𝑘 ∈ 𝐾𝑙 .
(9)
Зададим 𝑉 𝑎𝑙, как сумму объемов всех фракций, т. е.
∑︁
𝐹𝑙
𝑉 𝑎𝑙 =
𝑙∈𝐿
и сравним планы и значения целевых функций этих моделей. Решение
будем получать при помощи симплекс-метода.
12
4.3
Сравнение
Проведем сравнение на примере. Произвольным образом зададим объемы фракций, цены на каждый вид готовой продукции, а также значения максимально требуемых объемов готовой продукции и запишем все
данные в таблицы Excel. Далее, при помощи пакета lpSolve в системе
R, получим решения. (Мы могли воспользоваться любым другим языком программирования со встроенным пакетом для решения задач ЛП,
например MatLab).
В таблице (2) представлены полученные значения объемов готовой
продукции и целевых функций.
Таблица 2: Объемы готовой продукции и значения целевых функций
Ацетилен
Технический углерод
Метанол
Формальдегид
Мочевина
Водород
Диметиловый эфир
Бензиновая фракция, дизельное топливо
Этилбензол
Окись этилена
Полиэтилен
Этиловый спирт
Моторное и бытовое топливо
Полипропилен
Изопропиловый спирт
Пропиловый спирт
Компонент моторного топлива
Бутадиеновый каучук
Бутиловый спирт
МТБЭ
Значание целевой функции
13
Упрощ.
модель
21
4
53
64
65
63.9
0
6
45.89
0
0
0
19.45
46
0
4
74.9
0
56
0
2313.7
Модель для
сравнения
21
4
53
64
65
64
36
6
46
75
32
4
67
46
6
4
75
64
56
35
3153
Как мы видим, значение целевой функции для упрощенной модели
существенно меньше, чем у модели для сравнения.
Заметим, что заданное в примере значение исходного объема сырья
обеспечивает полное удовлетворение спроса по каждому виду готовой
продукции. Однако в случае упрощенной модели мы имеем позиции как
с частично, так и с полностью неудовлетворенным спросом.
Таким образом, разделив на 4 (по количеству технологических установок) части исходный объем сырья и назначив их на производство готовой продукции, по предложенной в [1] модели, мы имеем значительные
потери сырья.
Из чего можем судить о существенности замены ограничения объемов, поступающих на технологические установки, сырья значением общего объема (5) ограничениями объемов фракций (8).
14
5
Заключение
В работе были построены две модели для задачи распределения ресурсов. Одна построена на основе диссертации [1], другая аналогична, но
учитывает неоднородный состав сырья. При помощи симплекс-метода
были получены решения для обеих моделей на конкретном числовом
примере и было произведено их сравнение. Результат сравнения наглядно показывает, что неоднородность состава сырья является важным фактором при моделировании, пренебрежение которым приводит к серьезным потерям.
15
Список литературы
[1] Афраймович Л. Г. Потоковые методы решения многоиндексных задач
транспортного типа //Диссертация на соискание ученой степени доктора физико-математических наук. Нижегородский государственный
университет им. Н. И. Лобачевского, 2013 г.
[2] Коршак А. А., Шаммазов А. М. Основы нефтегазовго дела //Учебник
для ВУЗов. Издание второе, дополненное и исправленное: — Уфа.:
ООО «ДизайнПолиграфСервис», 2002 - 544 с.: илл.
[3] Информационный сайт — http://www.gazprominfo.ru
[4] Информационный сайт — http://www.mining-enc.ru
[5] Информационный сайт — http://www.nvnipi.ru
16
A
Фракции
Таблица 3: Фракции
Фракция
Метан
Этан
Пропан
Бутаны
Объем
942
432
425
300
Таблица 4: Метан
Название продукта
Ацетилен
Технический углерод
Метанол
Формальдегид
Мочевина
Водород
Диметиловый спирт
Бензиновая фракция, дизельное
топливо, твердые парафины
Стоимость
7
6
5
4
3
2
1
8
Макс. объем
21
4
53
64
65
64
36
6
Таблица 5: Этан
Название продукта
Этилбензол
Окись этилена
Полиэтилен
Этиловый спирт
Стоимость
4
3
2
2
17
Макс. объем
46
75
32
4
Таблица 6: Пропан
Название продукта
Растворитель, хладагент, моторное и бытовое топливо
Полипропилен
Изопропиловый спирт
Пропиловый спирт
Стоимость
4
Макс. объем
67
4
3
5
46
6
4
Таблица 7: Бутаны
Название продукта
Компонент моторного топлива
Бутадиеновый каучук
Бутиловый спирт
МТБЭ
Стоимость
6
3
6
3
18
Макс. объем
75
64
56
35
B
Программа на R для модели для сравнения
library ( lpSolve )
#Data on f r a c t i o n s
metan <- r e a d . c s v ( f i l e ="Metan . c s v " , dec=" . " , h e a d e r=TRUE)
m_s i z e <- nrow ( metan )
e t a n <- r e a d . c s v ( f i l e =" Etan . c s v " , dec=" . " , h e a d e r=TRUE)
e_s i z e <- nrow ( e t a n )
propan <- r e a d . c s v ( f i l e =" Propan . c s v " , dec=" . " , h e a d e r=TRUE)
p_s i z e <- nrow ( propan )
butan <- r e a d . c s v ( f i l e ="Butan . c s v " , dec=" . " , h e a d e r=TRUE)
b_s i z e <- nrow ( butan )
#P r i c e o f each p r o d u c t
p r i c e_p r o d u c t s <- c ( metan [ , 2 ] , e t a n [ , 2 ] , propan [ , 2 ] , butan [ , 2 ] )
s i z e_a l l_p r o d u c t s <- l e n g t h ( p r i c e_p r o d u c t s )
f . o b j <- p r i c e_p r o d u c t s
#Demand on each p r o d u c t
v o l_p r o d u c t s <- c ( metan [ , 3 ] , e t a n [ , 3 ] , propan [ , 3 ] , butan [ , 3 ] )
#A v a i l a b l e o f each f r a c t i o n
f r a c <- r e a d . c s v ( f i l e =" F r a c t i o n s . c s v " , dec=" . " , h e a d e r=TRUE)
v o l_f r a c <- c ( f r a c [ , 2 ] )
s i z e_f r a c <- 4
num <- c (m_s i z e , e_s i z e , p_s i z e , b_s i z e )
matr <- c ( )
k <- 1
f o r ( i i n 1 : s i z e_f r a c ) {
s t r i n g <- numeric ( s i z e_a l l_p r o d u c t s )
f o r ( j i n k : ( k+num [ i ] - 1 ) )
s t r i n g [ j ] <- 1
matr <- c ( matr , s t r i n g )
k <- ( k+num [ i ] )
}
19
f o r ( i i n 1 : s i z e_a l l_p r o d u c t s ) {
s t r i n g <- numeric ( s i z e_a l l_p r o d u c t s )
s t r i n g [ i ] <- 1
matr <- c ( matr , s t r i n g )
}
f . con <- matrix ( matr , nrow=( s i z e_a l l_p r o d u c t s+s i z e_f r a c ) ,
byrow=TRUE)
f . d i r <- c ( )
f o r ( i i n 1 : ( s i z e_a l l_p r o d u c t s+s i z e_f r a c ) ) {
f . d i r <- c ( f . d i r , "<=" )
}
f . r h s <- c ( v o l_f r a c , v o l_p r o d u c t s )
x <- c ( l p ( "max" , f . obj , f . con , f . d i r , f . rhs ,
i n t . vec = 1 : 4 ) $ s o l u t i o n )
f <- l p ( "max" , f . obj , f . con , f . d i r , f . rhs ,
i n t . vec = 1 : 4 ) $ o b j v a l
x
f
20
C
Программа на R для упрощенной модели
library ( lpSolve )
#Data on f r a c t i o n s
metan <- r e a d . c s v ( f i l e ="Metan . c s v " , dec=" . " , h e a d e r=TRUE)
m_s i z e <- nrow ( metan )
e t a n <- r e a d . c s v ( f i l e =" Etan . c s v " , dec=" . " , h e a d e r=TRUE)
e_s i z e <- nrow ( e t a n )
propan <- r e a d . c s v ( f i l e =" Propan . c s v " , dec=" . " , h e a d e r=TRUE)
p_s i z e <- nrow ( propan )
butan <- r e a d . c s v ( f i l e ="Butan . c s v " , dec=" . " , h e a d e r=TRUE)
b_s i z e <- nrow ( butan )
#P r i c e o f each p r o d u c t
p r i c e_p r o d u c t s <- c ( metan [ , 2 ] , e t a n [ , 2 ] , propan [ , 2 ] , butan [ , 2 ] )
f . o b j <- c ( 0 , 0 , 0 , 0 , p r i c e_p r o d u c t s )
#Demand on each p r o d u c t
v o l_p r o d u c t s <- c ( metan [ , 3 ] , e t a n [ , 3 ] , propan [ , 3 ] , butan [ , 3 ] )
#A v a i l a b l e o f each f r a c t i o n
f r a c <- r e a d . c s v ( f i l e =" F r a c t i o n s . c s v " , dec=" . " , h e a d e r=TRUE)
v o l_f r a c <- c ( f r a c [ , 2 ] )
s i z e_f r a c <- 4
v a l <- sum ( f r a c [ 1 : s i z e_f r a c , 2 ] )
r a t <- f r a c [ 1 : s i z e_f r a c , 2 ] / v a l
s i z e_a l l_p r o d u c t s <- m_s i z e+e_s i z e+p_s i z e+b_s i z e
s i z e_a l l <- s i z e_a l l_p r o d u c t s+s i z e_f r a c
num <- c (m_s i z e , e_s i z e , p_s i z e , b_s i z e )
matr <- c ( )
s t r i n g <- numeric ( s i z e_a l l )
for ( j in 1:4)
21
s t r i n g [ j ] <- 1
matr <- c ( matr , s t r i n g )
q <- s i z e_f r a c +1
f o r ( j i n 1 : s i z e_f r a c ) {
s t r i n g <- numeric ( s i z e_a l l )
s t r i n g [ j ] <- ( r a t [ j ] ) * ( - 1 )
f o r ( l i n q : ( q+num [ j ] - 1 ) )
s t r i n g [ l ] <- 1
q <- q+num [ j ]
matr <- c ( matr , s t r i n g )
}
f o r ( i i n ( s i z e_f r a c +1): s i z e_a l l ) {
s t r i n g <- numeric ( s i z e_a l l )
s t r i n g [ i ] <- 1
matr <- c ( matr , s t r i n g )
}
f . con <- matrix ( matr , nrow=(1+ s i z e_f r a c+s i z e_a l l_p r o d u c t s ) ,
byrow=TRUE)
f . d i r <- c ( )
f o r ( i i n 1:(1+ s i z e_f r a c+s i z e_a l l_p r o d u c t s ) ) {
f . d i r <- c ( f . d i r , "<=" )
}
f . r h s <- c ( val , 0 , 0 , 0 , 0 , v o l_p r o d u c t s )
x <- c ( l p ( "max" , f . obj , f . con , f . d i r , f . rhs ,
i n t . vec = 1 : 4 ) $ s o l u t i o n )
f <- l p ( "max" , f . obj , f . con , f . d i r , f . rhs ,
i n t . vec = 1 : 4 ) $ o b j v a l
x
f
22
Отзывы:
Авторизуйтесь, чтобы оставить отзыв