59.приложение теории автоматов к перевозке нефти автотранспортом
1. № 4 • апрель 20072
НАШИ ЧИТАТЕЛИ OUR READERS
Т Е Х Н О Л О Г И И
НЕФТЕГАЗОВЫЕ
Ж рнал интересен, прежде все о, а о но в мир западных техноло ий. Не се рет, что западный
стиль работы способств ет с орейшем внедрению достижений на чной мысли в производство, и
хотя отечественный специалист, часто, под ован теоретичес и не х же чем западный олле а, тем
не менее, ощ щается нехват а пра тичес о о опыта применения новых техноло ий. По моем мне-
нию, ж рнал восполняет именно этот ва м в области пра ти и использования теоретичес их нов-
шеств и является мостом, связывающим абстра тн ю на и реальное производство.
Помимо то о, дости ается очевидное предназначение ж рнала, а именно, нивелирование язы-
ово о барьера. Специалисты, не владеющие ан лийс им язы ом, бла одаря наличию та о о изда-
ния, мо т ощ щать себя полноценными членами мирово о сообщества инженеров нефтяни ов.
Але сандр Ви торович Абрамов,
инженер НК «ЮКОС»
ВВЕДЕНИЕ
В ТЕОРИЮ АВТОМАТОВ
Составление и оптимизация рафи а движения
автомобилей при перевоз е нефти мо т быть вы-
полнены с использованием автоматных преобразо-
ваний. Отличие автоматно о преобразования инфор-
мации от ф н ционально о за лючается в том, что
те щее состояние автоматно о преобразователя, в
отличие от ф н ционально о, зависит не толь о от
те ще о входно о воздействия, но и от предыд -
ще о состояния преобразователя.
В терминах теории автоматов автомобиль, пере-
возящий нефть, может быть представлен преобра-
зователем последовательно переходящим из одно-
о состояния в др ое. Та ими состояниями для ав-
томобиля являются:
• налив цистерны;
• п ть п н т слива;
• ожидание слива (очередь);
• слив цистерны;
• п ть п н т налива;
• ожидание налива (очередь);
• смена водителя (пересмен а).
ПРИЛОЖЕНИЕ ТЕОРИИ АВТОМАТОВ
К ПЕРЕВОЗКЕ НЕФТИ
АВТОТРАНСПОРТОМ
А. Абрамов, В. Коновалов, НК «ЮКОС»
На ранних этапах разработ и нефтяных месторождений считается э ономичес и целесообраз-
ным транспортировать нефть до п н та обработ и автомобильным транспортом. Правильная
ор анизация та их перевозо и поддержание высо ой дисциплины тр да позволяют значительно
повысить рентабельность та их прое тов, а обеспечение вывоза нефти дости ается минималь-
ным числом автомобилей и эста ад налива.
В статье изла ается метод составления рафи а движения и определения минимально о числа
автомобилей для ор анизации вывоза нефти, основанный на теории автоматов.
Входным си налом (входом) преобразователя, пе-
реводящим е о из одно о состояния в др ое, в рас-
сматриваемом сл чае, может быть о ончание не о-
е о фи сированно о временно о интервала, после
оторо о автомат переходит в след ющее состоя-
ние. Та , например, си налом переход в состоя-
ние «п ть слив » является завершение налива ав-
тоцистерны. А время налива автоцистерны в идеале
является величиной постоянной. По истечении вре-
мени, необходимо о для преодоления расстояния от
п н та налива до п н та слива, автомобиль перево-
дится либо в состояние «слив», при наличии свобод-
ных мест, либо в состояние «ожидание слива» при
их отс тствии.
Анало ично, эста ада налива и слива может быть
представлена преобразователем, имеющим все о
два состояния:
• свободно;
• занято.
При этом переход из одно о состояния в др ое
происходит при наст плении внешне о события, а
именно, наполнения/слива цистерны или подъезда
п сто о автомобиля.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
2. 3
НАШИ ЧИТАТЕЛИ OUR READERS
№ 4 • апрель 2007Т Е Х Н О Л О Г И И
НЕФТЕГАЗОВЫЕ
ПРОГРАММНАЯ РЕАЛИЗАЦИЯ АВТОМАТОВ
Для то о, чтобы не привязываться он ретном
язы про раммирования все дальнейшие расс ж-
дения б д т приведены с использованием псевдо-
ода. Та , ци л с п стым телом по переменной i с
диапазоном ее изменения в пределах от 1 до n-1 на
псевдо оде б дет иметь вид:
for i=[1, n)
Все необходимые данные б дем хранить в простей-
ших стр т рах, подобных массивам, обращение
элемент массива, на псевдо оде, вы лядит та :
array[i]
Примем, что инде сация массивов начинается с
1. Операторы, выполняемые в рам ах одно о ци ла
или словия, б дем выделять фи рными с об ами
{...} и обозначать отст пом.
Кроме то о, б дем считать, что псевдо од доп с-
ает запись инстр ций на естественном язы е. В
дальнейшем, там, де потреб ется, б д т даваться
необходимые пояснения по синта сис псевдо ода.
Обозначим число автомобилей символом n, а чис-
ло эста ад налива и слива - m и k, соответственно.
Б дем хранить состояния автомобилей, времена
смены состояний автомобилей и состояния платформ
налива и слива в след ющих массивах:
CarsState[n] // состояния автомобилей
CarsChangeTime[n] // времена смены состояний ав-
томобилей
InfillPlatformState[m] // состояния платформ налива
SinkPlatformState[k] // состояния платформ слива
Здесь и далее двойным слэшем обозначено на-
чало однострочно о омментария.
Обозначим символом t – дис ретное время в ми-
н тах, CumQ – объем жид ости на опленной в б фе-
ре, м3. Состояние всех автомобилей и платформ, с
помин тной детализацией, в след ющие 48 ч б дет
описываться ци лом:
for t=[0, 48*60] // ци л по дис ретном времени
{
I при наст плении времени смены состояния
автомобилей изменить состояние
II вычислить м лятивный объем жид ости на-
опленной в б фере
III вывести рез льтаты (те щее время, состо-
яние автомобилей и объем жид ости в б фере)
}
До начала это о ци ла след ет инициализация.
Времена смены состояний автомобилей обн ляют-
ся, сами автомобили переводятся в состояние «на
п ти налив ». Платформы налива и слива перево-
дятся в состояние «свободно». Объем жид ости в
б фере принимается равным не отором начально-
м значению.
Смен состояний автомобилей, при истечении
соответств ющих временных интервалов, необходи-
мо проводить в три этапа.
Этап 1. Необходимо освободить все платформы
налива и слива и перевести занимавшие их автомо-
били в состояние «на п ти слив » или «на п ти
налив » соответственно, а платформы в состояние
«свободно». Перевести автомобили, находящиеся в
пересмен е, в состояние «на п ти налив ».
Этап 2. Перевести все автомобили, ожидающие
налив или слив, в состояние «налив» или «слив», при
наличии свободных платформ, а платформы в со-
стояние «занято».
Этап 3. Перевести все автомобили, находящиеся
в состоянии «на п ти налив » или «на п ти слив »,
в состояние «налив» или «слив», при наличии свобод-
ных платформ. При отс тствии свободных платформ
перевести автомобили в состояние «ожидание».
С четом изложенных замечаний запишем выше-
приведенный ци л более детально.
for t=[0, 48*60] // ци л по дис ретном времени
{
// I. смена состояний автомобилей
for i=[1, n] // ци л по всем автомобилям
{
if CarsChangeTime[i] <= t // словие смены со-
стояния автомобиля
{
if CarsState[i] == налив
{
- перевести платформ налива в состоя-
ние «свободно»
- перевести автомобиль в состояние «на
п ти слив »
- нарастить время смены состояния ав-
томобиля на величин необходим ю для
то о, чтобы добраться до п н та слива
- величить на единиц счетчи налитых
цистерн
}
if CarsState[i] == слив
{
- перевести платформ слива в состоя-
ние «свободно»
- перевести автомобиль в состояние «на
п ти налив »
- нарастить время смены состояния ав-
томобиля на величин необходим ю для
то о, чтобы добраться до п н та налива
}
if CarsState[i] == пересмен а
{
- перевести автомобиль в состояние «на
п ти налив »
}
}
}
for i=[1, n] // ци л по всем автомобилям
{
if CarsChangeTime[i] <= t // словие смены со-
стояния автомобиля
{
if CarsState[i] == ожидание налива
{
- если автомобиль находится в работе
более положенно о времени, то пере-
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»
3. № 4 • апрель 20074
НАШИ ЧИТАТЕЛИ OUR READERS
Т Е Х Н О Л О Г И И
НЕФТЕГАЗОВЫЕ
вести в состояние «пересмен а», нара-
стить время смены состояния автомо-
биля на величин , необходим ю для
то о, чтобы выполнить пересмен
- если время пересмен и не наст пило, то
при наличии свободных платформ нали-
ва перевести автомобиль в состояние
«налив», нарастить время смены состо-
яния автомобиля на величин , необходи-
м ю для завершения налива, пе ревести
платформ налива в состояние «занято»
}
if CarsState[i] == слив
{
- при наличии свободных платформ сли-
ва перевести автомобиль в состояние
«слив», нарастить время смены состо-
яния автомобиля на величин , необхо-
дим ю для завершения слива
- перевести платформ слива в состоя-
ние «занято»
}
}
}
for i=[1, n] // ци л по всем автомобилям
{
if CarsChangeTime[i] <= t // словие смены со-
стояния автомобиля
{
if CarsState[i] == на п ти слив
{
- при наличии свободных платформ сли-
ва перевести автомобиль в состояние
«слив», нарастить время смены состо-
яния автомобиля на величин , необхо-
дим ю для завершения слива, переве-
сти платформ слива в состояние «за
нято»
- при отс тствии свободных платформ
слива перевести автомобиль в состоя-
ние «ожидание слива»
}
if CarsState[i] == на п ти налив
{
- если автомобиль совершил необходи
мое число рейсов или наст пило время
пересмен и, то перевести автомобиль
в состояние «пересмен а» и нарастить
время смены состояния автомобиля на
величин , необходим ю для то о, что-
бы выполнить пересмен
- если время пересмен и не наст пило,
то при наличии свободных платформ
налива перевести автомобиль в состо-
яние «налив», нарастить время смены
состояния автомобиля на величин , не-
обходим ю для завершения налива, пе-
ревести платформ налива в состояние
«занято». При отс тствии свободных
платформ налива перевести автомо-
биль в состояние «ожидание налива»
}
}
}
// II. вычисление объема жид ости, на оплен-
ной в б фере
for j=[1, m] // ци л по всем платформам налива
{
if InfillPlatformState[j] == занято // идет налив
{
CumQ = CumQ – OutflowRateM3Min
// OutflowRateM3Min – с орость налива,
в м3
/мин
}
}
CumQ = CumQ + InflowRateM3Min
// InflowRateM3Min – с орость пост пления жид
ости в б фер, в м3
/мин
// III. вывод рез льтатов
- вывести те щее время, состояния автомоби
лей и объем жид ости в б фере
}
Предложенный ал оритм позволяет составить по-
мин тный рафи движения автомобилей и отследить
состояние б фера на протяжении заданно о интерва-
ла времени. Минимальное число автомобилей и плат-
форм налива и слива выбирается итеративно методом
проб и ошибо . Критерием оптимальности является
равенство объемов жид ости в б фере в начале и он-
це достаточно длинно о интервала времени, а та же
сохранение это о объема постоянным при величении
азанно о интервала времени. Кроме то о, объем
жид ости в б фере не должен принимать отрицатель-
ные значения. Пра тичес и, арантией то о, что вся
жид ость б дет вывезена, является фа т меньшения
со временем объема жид ости в б фере.
Параметрами, отражающими особенности рабо-
ты он ретно о п н та налива и влияющими на ра-
фи движения автомобилей, являются след ющие:
расстояние от п н та налива до п н та слива, рас-
стояние от п н та слива до п н та налива (при дви-
жении по разным маршр там), с орость движения
автомобилей, объем автоцистерны, число автомо-
билей, эста ад налива, эста ад слива, время напол-
нения цистерны, время слива цистерны, с орость
пост пления жид ости на п н т налива, продолжи-
тельность смены, число рейсов за смен , время пе-
ресмен и. Все они читываются при составлении
рафи а движения автомобилей.
Изложенный ал оритм составления рафи а дви-
жения автоцистерн реализован на язы е Visual Basic
for Applications в виде ма роса Excel и дост пен для
за р з и по адрес : http://truck-tank.narod.ru/.
РАСШИРЕНИЕ ВОЗМОЖНОСТЕЙ
ОПИСАННОГО АЛГОРИТМА
При большом числе автомобилей, задействован-
ных в перевоз ах, целесообразно вводить их в ра-
бот не все сраз , а партиями, например по числ
эста ад налива. Это можно ле о честь в предло-
женном ал оритме п тем величения числа автомо-
билей через фи сированный интервал времени.
Для чета возможной полом и автомобиля при дви-
жении межд п н тами налива и слива можно допол-
нить списо е о состояний состоянием «полом а». Пе-
ревод автомобиля в это состояние должен ос ществ-
ляться с четом вероятности е о полом и на маршр те.
Copyright ОАО «ЦКБ «БИБКОМ» & ООО «Aгентство Kнига-Cервис»