2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 [MS Excel] Линейное программирование и условие "если - то"
Сообщение21.08.2015, 20:37 
Аватара пользователя


21/08/15
5
Здравствуйте!

Для решения некоей задачи - расчёта плана формирования ускоренных грузовых поездов - использовал линейное программирование и программу LP solve. В принципе всё то же самое можно сделать в Excel.

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

Конкретно это выглядит так:
1) Если в составе поезда будут однотипные вагоны - то будет одно
2) Если в составе поезда будут вагоны 2 и более типов - то другое

Как это задать в программе не знаю - в этом и моя просьба о помощи - с помощью какого инструмента/программы можно решить такую задачу.
Рассуждения от себя: можно ли это сделать в Excel используя его функции "если"? Но тогда и линейное программирование, наверно, не сработает - оно же линейное.

Помогите пожалуйста 8-)

 Профиль  
                  
 
 Re: Линейное программирование и условие "если - то"
Сообщение21.08.2015, 21:09 
Заслуженный участник


06/07/11
5627
кран.набрать.грамота
Mihak в сообщении #1046835 писал(а):
Рассуждения от себя: можно ли это сделать в Excel используя его функции "если"?
Это гораздо проще попробовать, чем ждать ответа от форума. Если кратко - то да, эксель - мощный инструмент, исчерпать его возможности непросто.

 Профиль  
                  
 
 Re: Линейное программирование и условие "если - то"
Сообщение22.08.2015, 02:45 
Заслуженный участник


16/02/13
4105
Владивосток
Эксель, подозреваю, решает задачу мощным перебором. Если так, то да, проще попробовать. Если же стоит именно задача линейного программирования, то нужно разбить на две и сравнить результаты. Конкретнее сказать можно только при более конкретной постановке задачи.

 Профиль  
                  
 
 Re: Линейное программирование и условие "если - то"
Сообщение22.08.2015, 07:35 


16/08/05
1146
Вряд ли Эксель полноценно способен решать задачи CP (Constraint Programming). Проще освоить LocalSolver, MiniZinc, AMPL.

 Профиль  
                  
 
 Re: Линейное программирование и условие "если - то"
Сообщение22.08.2015, 13:30 


17/10/08

1313
iifat в сообщении #1046897 писал(а):
Эксель, подозреваю, решает задачу мощным перебором...

Ну, вообще-то в Excel есть численные методы. Линейное программирование (в том числе, частично-целочисленное)там уже лет 20 как есть. Раньше оно было в меню "Поиск решения".

Mihak в сообщении #1046835 писал(а):
...
Как это задать в программе не знаю - в этом и моя просьба о помощи - с помощью какого инструмента/программы можно решить такую задачу.
Рассуждения от себя: можно ли это сделать в Excel используя его функции "если"? Но тогда и линейное программирование, наверно, не сработает - оно же линейное.
Помогите пожалуйста 8-)

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

 Профиль  
                  
 
 Re: [MS Excel] Линейное программирование и условие "если - то"
Сообщение27.08.2015, 11:30 
Аватара пользователя


21/08/15
5
Всем спасибо за советы. По Excel понял.

Насчёт постановки - попробую раскрыть суть вопроса.

Как я уже сказал смысл задачи в расчёте плана формирования ускоренных грузовых поездов (далее просто "поездов") и определения схем их составов с учетом обеспечения бесперегрузочного освоения грузопотоков, сегментированных по типам грузовых мест.

Под "грузопотоком" понимается заданный объём грузов, следующий по определённому маршруту, например из Санкт-Петербурга в Москву или, как будет употреблено далее «грузопоток такой то корреспонденции». Для простоты взято 3 города – А, В и С.

Так как мы принимаем в задаче, что все грузы должны доставляться без перегрузки, то в соответствии с заданными городами получится три «назначения» поездов:
Назначение 1 от А до С
Назначение 2 от А до В
Назначение 3 от В до С.

Под "схемой (композицией) поезда" понимается, что поезд может состоять, как из однотипных вагонов – например, платформ - так и из вагонов разных типов - для простой задачи возьмём крытые вагоны и платформы. В задаче задано, что для каждого назначения поезда может быть определено (рассчитано) по 3 различных схемы (композиции). Выходит, что в задаче может быть до 9 композиций поездов. Да, длина состава фиксированная, порядок цифр 20-30 вагонов.

Под "типом грузового места" понимается, что в вагоне существует определённое пространство, куда может быть погружен груз в таре определённого типоразмера. Например, на платформу длиной 40 футов можно погрузить груз в одном контейнере длиной 40 футов, следовательно, в данном вагоне есть одно «грузовое место» для 40-футового контейнера и соответственно, если в поезд поставить таких платформ, то в поезде будет такое-то число мест для 40-футовых контейнеров. Для нашей задачи принято, что есть крытые вагоны и платформы, а в них грузовые места для пакетированных грузов и контейнеров соответственно. Соответственно в задаче фигурируют грузопотоки из грузов в контейнерах и из пакетированных грузов.

Размещаю ссылку на архив:
word-файл с описанием уравнений и переменных и lp-файл, который можно решить и получить результат; также .xls с проверкой результатов, но (пока) без пояснений.
https://yadi.sk/d/1Inxj2-xigpNd

По результатам:
Программа всё посчитала «просто» - получилось определённое число поездов за заданный временной период (месяц) по 3 назначениям. Для каждого назначения получилась одна своя композиция. Во всех случаях композиции получились «двойные» из вагонов-платформ и крытых вагонов.
И мне понятно, что при изменении исходных данных или усложнении задачи, так будет всегда – всегда будут поезда с композициями из двух типов вагонов одновременно. В жизни же наоборот предпочтительней, чтобы композиции поездов состояли из вагонов одного типа, но в текущей задаче это никак не задано.
Первопричина предпочтительности однородных композиций это терминальное обслуживание, но это может быть как простое жёсткое условие – поезда из вагонов только одного типа, без учёта каких либо дополнительных денежных затрат. Но даже если и задать дополнительные денежные затраты – то как их поместить в целевую функцию? Как программа будет знать композиция состоит из одного типа вагонов или из более чем одного?
В принципе, можно бы вообще отказаться от композиций – пусть все поезда будут из одного типа вагонов. Тогда задача сразу упрощается, но тогда и снижается её ценность в рамках моей диссертации.
Почему могут потребоваться двойные композиции – первопричина это частота обращения поезда по заданному маршруту. При однородной композиции частота может оказаться слишком низкой для того, чтобы поезд был востребован клиентами. Если собрать поезд из вагонов разных типов, а значит и перевезти грузы разных типов, то частота обращения таким путём будет повышена. Это при фиксированной длине состава.

Получается, что мы должны дополнительно учесть то что:
1) терминалы преимущественно специализированные;
2) композиции в целом несколько усложняют технологию, но я так с ходу даже не знаю, как это посчитать в деньгах;
3) с точки зрения конкурентоспособности может быть задана минимальная частота обращения поездов – пусть 21 раз в месяц (5 раз в неделю).

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

Спасибо!

 Профиль  
                  
 
 Re: [MS Excel] Линейное программирование и условие "если - то"
Сообщение27.08.2015, 13:29 
Заслуженный участник


16/02/13
4105
Владивосток
Посмотрел. Не понял. То ли потерялись формулы (у меня дома OpenOffice), то ли их и не было (судя по тому, что часть таки видна).

 Профиль  
                  
 
 Re: [MS Excel] Линейное программирование и условие "если - то"
Сообщение27.08.2015, 15:42 
Аватара пользователя


21/08/15
5
Поправил это дело - закатал в .doc формат, теперь формулы отображаются картинками - https://yadi.sk/i/DyLlGyrqihCwd
на всякий случай и в PDF закатал - https://yadi.sk/i/cSMXLHc4ihD6R

P. S. оффтоп. работаю в Word 2010, формулы были набраны в формате Word 2007, но изначально файл не мой. Также хочу отметить, что при простом закатывании в PDF .docx-файла формулы передались некорректно.

 Профиль  
                  
 
 Re: [MS Excel] Линейное программирование и условие "если - то"
Сообщение28.08.2015, 16:32 
Аватара пользователя


21/08/15
5
Начал думать в Excel - не понимаю как можно запихать функцию "ЕСЛИ" в линейное программирование?
По мне выходит:
1) считаем число поездов для однородных композиций - это типовая задача для линейного программирования
2) проверяем результаты на заданное условие - минимальная частота обращения поездов 21 раз в неделю
3) считаем второй этап, в котором пытаемся рассчитать композиции поездов из двух (и более) типов вагонов, чтобы увеличить частоту обращения поездов.

 Профиль  
                  
 
 Re: [MS Excel] Линейное программирование и условие "если - то"
Сообщение17.10.2016, 16:05 


17/10/16
1
Mihak

Привет!

Можешь скинуть excel файл с моделью. Очень нужно.

Спасибо

 Профиль  
                  
 
 Re: [MS Excel] Линейное программирование и условие "если - то"
Сообщение18.10.2016, 20:01 
Аватара пользователя


21/08/15
5
Написал Вам личное сообщение. Пожалуйста уточните, что именно Вам нужно и в каком виде.

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 11 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group