Алгоритм синтеза оптимального транспортного плана в системе поддержки принятия решений для лесопромышленного комплекса и биоэнергетики

Алгоритм синтеза оптимального транспортного плана в системе поддержки принятия решений для лесопромышленного комплекса и биоэнергетики 1

А. П. Соколов2 Ю. Ю. Герасимов Петрозаводский государственный университет Научно-исследовательский институт леса Финляндии

АННОТАЦИЯ

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

Ключевые слова: лесосечные работы, транспорт леса, логистика, динамическое программирование, оптимизация.

SUMMARY

In this paper we present an algorithm for finding the optimal transport plan for the delivery of round timber and energy wood, based on the method of dynamic programming.

Keywords: wood harvesting, wood transport, logistics, dynamic programming, optimization.

На лесоинженерном факультете Петрозаводского государственного университета в рамках федеральной целевой программы «Научные и научно-педагогические кадры инновационной России» и международного проекта «Лесозаготовки и логистика в России» в настоящее время активно ведутся работы по разработке компьютерной информационно-вычислительной системы для поддержки принятия решений в сфере лесопромышленной логистики (КИВС ЛПЛ) [1, 2, 3, 4, 5].

Одним из основных блоков КИВС ЛПЛ является блок синтеза оптимального транспортного плана на вывоз-

1 Работа выполнена при финансовой поддержке Федерального агентства по науке и инновациям в рамках ФЦП «Научные и научно-педагогические кадры инновационной России», тема НИР «Создание инфраструктуры лесных дорог и управление системами транспортировки древесины для лесопромышленного комплекса и биоэнергетики» и в рамках проекта «Лесозаготовки и логистика в России», финансируемого Европейским Союзом через финское агентство по развитию технологий и инноваций (ТЕКЕБ).

2 Авторы - соответственно доцент кафедры тяговых машин и ведущий научный сотрудник НИИ леса Финляндии.

© Соколов А. П., Герасимов Ю. Ю., 2010

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

Для обеспечения работы этого блока был разработан алгоритм, основанный на методах динамического программирования [6, 7, 8, 9]. Причем оказалось, что поставленная задача не могла быть решена классическими методами. Она относится к открытым, или «бесконечношаговым», задачам. Составление маршрута для каждого автомобиля прерывается и в него вставляется возврат в гараж (или не выезд из гаража) не потому, что выполнено заданное количество шагов программирования, а лишь по одной из трех следующих причин:

- достигнут конец смены;

- на лесосеках иссяк запас соответствующих лесоматериалов;

- все контракты с предприятиями-потребителями выполнены с точностью до объема, перевозимого данным автомобилем.

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

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

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

При наличии альтернативных видов лесоматериалов, предназначенных для перевозки с оптимальной лесосеки А к оптимальному потребителю Б, выбирается лесоматериал с более высоким приоритетом. Приоритет устанавливается в диалогах, задающих характеристики потребителей и лесосек [1, 5]. Лесоматериалы с

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

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

Реализация алгоритма заключается в выполнении следующих шагов:

Шаг 1. Задается расчетный период. Шаг 2. Задается продолжительность смены на вывозке и число смен в сутки. Шаг 3. Составляется матрица соответствия видов продукции на лесосеках и на складах потребителей (по идентификаторам). Шаг 4. Задается приоритет гаражей и приоритет

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

Шаг 8. Обнуляется счетчик времени, все автомобили полагаются находящимися в своих гаражах.

Шаг 9. Составляется список автомобилей по приоритету.

Шаг 10. Делается активным первый автомобиль из списка.

Шаг 11. По базе данных лесосек определяется список лесосек, на которых в достаточном объеме содержатся те виды продукции, которые может перевозить активный автомобиль. В дальнейшем учитываются только лесосеки из этого списка. Шаг 12. Если список лесосек пуст, активный автомобиль включается в список простаивающих в текущей смене, активным становится следующий автомобиль, осуществляется переход к шагу 11. Если список автомобилей исчерпан, осуществляется переход к шагу 75. Шаг 13. По учетным карточкам предприятий-потребителей определяется список потреби-

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

Шаг 14. Если список потребителей пуст, активный автомобиль включается в список простаивающих в текущей смене, активным становится следующий автомобиль и осуществляется переход к шагу 11. Если список автомобилей исчерпан, осуществляется переход к шагу 75.

Шаг 15. Для каждого потребителя определяется критическое время прибытия автомобиля по формуле:

tc (s) = T -1 - tr (s),

где s - состояние системы, соответствующее нахождению автомобиля у данного потребителя; T - продолжительность смены; tl - время погрузки (разгрузки); tj^s) - время возврата от данного потребителя в гараж.

Шаг 16. Создается пустая таблица с n+m колонками, где n - число лесосек, а m - число предприятий-потребителей. Каждая колонка соответствует определенной лесосеке или определенному потребителю.

Шаг 17. В таблицу вставляется блок из к+3 строк, где к - число рассматриваемых видов продукции лесозаготовок по классификатору лесосек.

Шаг 18. В первую строку для всех лесосек вставляются условные оптимальные управления на первом шаге, одинаковые для всех лесосек и соответствующие принятию решения двигаться на каждую лесосеку из гаража.

Шаг 19. Во вторую строку для всех лесосек вставляется время движения без груза от гаража до каждой лесосеки.

Шаг 20. В последние к строк вставляется объем каждого из к видов продукции, находящегося на каждой лесосеке по учетной карточке.

Шаг 21. В таблицу вставляется блок из q+5 строк, где q - число рассматриваемых видов продукции лесозаготовок по классификатору потребителей. Блок активизируется.

Шаг 22. Активизируется первый потребитель.

Шаг 23. Для активного потребителя решается задача условной оптимизации:

г,. (s) = min {г,._! (u) + t(s, u) + tl}, где Ti(s) - время от начала смены до прибытия к активному потребителю; i - номер шага динамического программирования; s - состояние системы, соответствующее нахождению автомобиля у активного потребителя; ri.1(u) - условно минимальное время от начала смены до прибытия на лесосеку u, найденное на предыдущем шаге динамического программирования;

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

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

Шаг 25. Во вторую строку активного блока в столбец активного потребителя вписывается найденное условно минимальное время от начала смены до прибытия автомобиля к активному потребителю или на соответствующую станцию т^).

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

Шаг 27. Если достигнуто начало таблицы, в последние д строк активного блока в столбец активного потребителя вписываются объемы продукции, которые может принять потребитель по видам из базы данных. Осуществляется переход к шагу 29.

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

Шаг 29. В активном блоке, в последних д строках столбца активного потребителя, отыскивается первый вид продукции, объем которого больше или равен объему, перевозимому автомобилем за один раз. Активизируется данный вид продукции.

Шаг 30. Если такая продукция не найдена, активный потребитель исключается из списка проверки. Осуществляется переход к шагу 40.

Шаг 31. По матрице соответствия видов продукции, определяется идентификатор первого вида продукции по классификатору лесосек, соответствующего активному виду продукции. Осуществляется подъем по таблице на строку выше стоящего блока лесосек, соответствующую найденному виду продукции по классификатору лесосек.

Шаг 32. В найденной строке определяется объем продукции в столбце, соответствующем условно оптимальной лесосеке и.

Шаг 33. Если найденный объем меньше объема, перевозимого автомобилем за один раз, или активный потребитель в соответствии с кон-

трактом не принимает данный вид продукции с данной лесосеки, по матрице соответствия видов продукции, определяется идентификатор следующего вида продукции по классификатору лесосек, соответствующего активному виду продукции и осуществляется переход к шагу 32. Если уже проверены все виды продукции, осуществляется переход к шагу 36.

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

Шаг 35. В четвертую и пятую строки активного блока в соответствующие столбцы вставляются идентификаторы активного вида продукции по классификаторам потребителей (в четвертую) и лесосек (в пятую). Осуществляется переход к шагу 39.

Шаг 36. Продолжая просмотр строк в активном блоке, определяется следующий вид продукции, объем которого больше или равен объему, перевозимому автомобилем за один раз.

Шаг 37. Если продукция найдена, активизируется данный вид продукции и осуществляется переход к шагу 31.

Шаг 38. Если продукция не найдена, лесосека u исключается из списка оптимизации и включается в список временно исключенных. Осуществляется переход к шагу 23.

Шаг 39. Сравниваются r,(s) с tc(s) для активного потребителя. Если т, (s) > tc (s), активный потребитель исключается из списка проверки.

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

Шаг 41. Если список потребителей исчерпан, осуществляется переход к шагу 43.

Шаг 42. Активизируется следующее предприятие-потребитель и осуществляется переход к шагу 23.

Шаг 43. Если по результатам последнего шага динамического программирования в списке проверки не осталось ни одного потребителя, осуществляется переход к шагу 56.

Шаг 44. В таблицу вставляется и активизируется блок из к+3 строк.

Шаг 45. Активизируется первая лесосека.

Шаг 46. Для активной лесосеки решается задача условной оптимизации:

Т (s) = min {т^ (u) + t(s, u) + tl},

где t,(s) - время от начала смены до прибытия на активную лесосеку; i - номер шага динамического программирования; s - состояние системы, соответствующее нахождению автомобиля на активной лесосеке; Ti-i(u) - условно минимальное время от начала смены до прибытия к

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

Г(Х и) - время движения без груза от потребителя и до активной лесосеки.

Шаг 47. В первую строку активного блока в столбец активной лесосеки вписывается найденное условное оптимальное управление и (идентификатор потребителя).

Шаг 48. Во вторую строку активного блока в столбец активной лесосеки вписывается найденное условно минимальное время от начала смены до прибытия автомобиля на активную лесосеку т^).

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

Шаг 50. Если достигнуто начало таблицы, в последние к строк активного блока в столбец активной лесосеки вписываются объемы продукции, которые находятся на активной лесосеке по видам из базы данных. Осуществляется переход к шагу 52.

Шаг 51. Содержимое ячеек, образованных столбцом активной лесосеки и строками блока, расположенного в таблице непосредственно над блоком, найденным на 49 шаге и содержащих объемы продукции, находящиеся на активной лесосеке по видам, копируется в соответствующие ячейки активного блока. Объем того товара, который был перевезен в ходе последнего рейса на активную лесосеку, уменьшается на величину объема перевозимого активным автомобилем за один раз.

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

Шаг 53. Если такая продукция не найдена, активная лесосека исключается из списка проверки.

Шаг 54. Если список лесосек исчерпан, осуществляется переход к шагу 21.

Шаг 55. Активизируется следующая лесосека и осуществляется переход к шагу 46.

Шаг 56. В активном блоке сравниваются т,(л) и

по очереди для всех потребителей. Если Т1 (5) = (5), поиск останавливается, активизируется текущий потребитель и осуществляется переход к шагу 60.

Шаг 57. Если потребитель с (5) = Хс не найден, осуществляется подъем по таблице от стро-

ки, содержащей т,(д) вверх на 2к+6 строк. Активизируется соответствующий блок. Шаг 58. В активном блоке для каждого потребителя определяется момент времени возврата в гараж

гь (*)=*, (0+1,+к (0.

Шаг 59. Шаг 60.

Шаг 61. Шаг 62.

Шаг 63.

Шаг 64. Шаг 65. Шаг 66.

Шаг 67.

Шаг 68.

Шаг 69. Шаг 70. Шаг 71.

Шаг 72.

Шаг 73. Шаг 74. Шаг 75. Шаг 76.

Шаг 77.

Определяется и активизируется потребитель с наибольшим 4(5).

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

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

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

Лесосека и и соответствующий вид продукции вставляется в маршрут автомобиля перед последним вставленным пунктом. Считывается условное оптимальное управление и для активной лесосеки в активном блоке.

Если условное оптимальное управление соответствует перемещению автомобиля из гаража, в маршрут движения автомобиля вставляется гараж в качестве исходного пункта и осуществляется переход к шагу 72. Активизируется потребитель и и блок, находящийся выше активного в данный момент. В активном блоке считывается вид продукции для потребителя и. Потребитель и и соответствующий вид продукции вставляется в маршрут автомобиля перед последним вставленным пунктом и осуществляется переход к шагу 63. Двигаясь по найденному маршруту от начала к концу, из баз данных лесосек и потребителей вычитаются перемещаемые в данном маршруте объемы лесоматериалов. Если список автомобилей исчерпан, осуществляется переход к шагу 75. Активизируется следующий автомобиль из списка и осуществляется переход к шагу 11. Закрывается текущая смена, сохраняются результаты.

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

Если просчитаны все дни заданного периода, расчет заканчивается, результаты выводятся.

Шаг 78. Открывается следующая смена и осуществляется переход к шагу 8.

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

СПИСОК ЛИТЕРАТУРЫ

1. Герасимов Ю. Ю. Логистика лесозаготовок: программа поиска оптимального лесотранс-портного плана / Ю. Ю. Герасимов, А. П. Соколов, В. С. Сюнёв // Лесная Россия. 2008. № 5-6. С. 54-61.

2. Соколов А. П. Геоинформационная система для решения оптимизационной задачи транспортной логистики круглых лесоматериалов / А. П. Соколов, Ю. Ю. Герасимов // ИВУЗ «Лесной журнал». 2009. № 3. С. 78-85.

3. Соколов А. П. Методика оптимизации парка автомобилей на вывозке сортиментов на основе имитационного моделирования в среде ГИС / А. П. Соколов, Ю. Ю. Герасимов // Ученые записки ПетрГУ. 2009. № 11. С. 72-77.

4. Gerasimov Yu. Yu. GIS-based decision-support program for short-wood transport in Russia / Yu. Yu. Gerasimov, A. P. Sokolov, T. Karjalainen // The Nordic-Baltic Conference on Forest Operations. Copenhagen September 23-25, 2008. // Forest & Landscape Working Papers. No. 30. 2008.

5. Gerasimov Yu. Yu. GIS-based Decision-Support Program for Planning and Analyzing Short-Wood Transport in Russia / Yu. Yu. Gerasimov, A. P. Sokolov, T. Karjalainen // Croatian Journal of Forest Engineering. Vol. 29, Issue 2. Zagreb: University of Zagreb, 2008. P. 163-175.

6. Андреев В. Н. Принятие оптимальных решений в лесном комплексе / В. Н. Андреев, Ю. Ю. Герасимов. Йоэнсуу: Изд-во университета Йоэн-суу, 1999. 200 с.

7. Беллман Р. Динамическое программирование / Р. Беллман. М.: Иностранная литература, 1960. 400 с.

8. Вентцель Е. С. Исследование операций. Задачи, принципы, методология: Учеб. пособие для студ. втузов. 2-е изд., стер. / Е. С. Вентцель. М.: Высш. шк., 2001. 208 с.

9. Вентцель Е. С. Элементы динамического программирования / Е. С. Вентцель. М.: Наука, 1964. 176 с.