Как мне использовать Excel Solver, чтобы решить эту проблему?

1425
Darklord Achilles

Корпорация ABC является глобальным дистрибьютором электрических компонентов и компонентов. Компания заключает контракт на закупку комплектующих и деталей из Европы и доставляет их на склады в трех европейских портах, E1, E2, E3. Различные компоненты и детали загружаются в контейнеры по требованию клиентов из США. Каждый порт имеет ограниченное фиксированное количество контейнеров, доступных каждый месяц. Затем контейнеры отправляются за границу контейнеровозами в порты P1, P2, P3 и P4. Из этих морских портов контейнеры обычно соединяются с грузовыми автомобилями и перевозятся во внутренние порты в I1, I2 и I3. В каждом порту каждый месяц имеется фиксированное количество грузовых автоперевозчиков. Эти внутренние порты иногда называют «грузовыми деревнями» или интермодальными узлами, где контейнеры собираются и передаются из одного вида транспорта в другой (т.е. от грузовика до рельса и наоборот). Из внутренних портов контейнеры транспортируются в распределительные центры ABC в D1, D2, D3, D4 и D5. Ниже приводятся данные об обработке и стоимости доставки ($ / контейнер) между каждым из пунктов отправления и назначения по этой зарубежной цепочке поставок и доступными контейнерами в каждом порту:

Образец листа Excel

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

-1
Таким образом, если что-то будет отправлено из P1 в E1, из I1 в D1, общая стоимость составит 2769 долларов? Итак, вы хотите найти самый дешевый маршрут, учитывая все эти варианты? Это единовременная вещь или вы хотите сделать что-то более сложное, например, отслеживать, сколько грузовиков / поездов / лодок используется, чтобы найти самый дешевый вариант в любой момент времени, который действительно доступен? Engineer Toast 7 лет назад 0
@EngineerToast Я хочу отслеживать контейнеры и стоимость. Darklord Achilles 7 лет назад 0
Перечитав и основываясь на ваших комментариях, я понимаю следующее: вы явно хотите использовать надстройку Solver, чтобы выяснить маршрут, по которому каждый контейнер должен идти каждый месяц, чтобы добраться из Европы до одного из нескольких пунктов назначения. Каждый пункт назначения хочет получать определенное количество контейнеров каждый месяц, и вы хотите минимизировать общую стоимость всех отправлений, верно? Engineer Toast 7 лет назад 0

2 ответа на вопрос

0
Engineer Toast

If you want a one-time answer, the cheapest route is E2 > P4 > I2 > D2 at a cost of $1,452.

The method I used was not elegant. I made a table of every possible option, used INDEX and MATCH to look up the cost of each of leg of the trip, and then sorted by total cost ascending. Here's what my sheet looks like:

Spreadhseet

The data on the left is what I copied from your spreadsheet. The table on the right is what I created. For each of the fields E, P, I, & D, I just manually typed them in groups. D1, D2, D3, D4, D5. Copy those five and paste them down a lot. I1, copy down for a set of D's, I2, copy down for a set of D's, etc. until the table was filled. For the field $EP, I combined INDEX and MATCH to lookup the cost of traveling from E(whatever) to P(whatever).

=1/(1/INDEX($B$3:$E$5,MATCH([@E],$A$3:$A$5,0),MATCH([@P],$B$2:$E$2,0))) 

INDEX takes in an array and returns a cell from somewhere within that array. To find the row I wanted, I used MATCH to find where the E value was in the range A3:A5. To find the column, I looked for the P value in B2:B4. That gave me the cost of going from E to P. I added the 1/(1/...) wrapper around the entire thing so it would return an error if the leg of the trip was zero, indicating that it was not available.

I then copied that formula to the fields $PI and $ID, adjusting each to reference the correct ranges. Finally, the Total Cost field simply added those three legs together. I sorted ascending and found the cheapest route. All the errors - the ones using unavailable routes - were sent to the bottom.


If you want an ongoing system where you want to keep track of how many transports are current en route for each leg of the trip so you can select the cheapest route based on what's currently available, you may want to look at a database solution. Alternatively, you can use the sorted list and just start at the top, working down until you find a route where each leg is currently available.

Вы приняли во внимание количество контейнеров? Darklord Achilles 7 лет назад 0
и есть идея использовать Excel Solver в этом? Darklord Achilles 7 лет назад 0
@DarklordAchilles Если вы хотите, чтобы это была запущенная операция, в которой вы могли бы указать, какой маршрут является самым дешевым из доступных на данный момент, исходя из доступности контейнера, вам может потребоваться просмотреть фактическую базу данных, чтобы вы могли отслеживать все ваши перевозки в пути. , Engineer Toast 7 лет назад 0
Даже мне нравится решение для базы данных. Но это задание - изучать решатель, и я не могу найти, как решить эти многочисленные уровни, используя его. Darklord Achilles 7 лет назад 0
0
OldUgly

Вот пример настройки вашей проблемы для Солвера. Возможно, вы сможете сделать его более компактным, но способ, которым я его настрою, позволяет легко диагностировать любые проблемы.

  1. Используйте ваши исходные данные на вкладке «Данные».
  2. Создайте новую вкладку, которую я назвал «Уравнение», чтобы настроить задачу Решателя.
  3. Столбцы от A до D используются для настройки всех возможных комбинаций маршрутов. например, строка 1 - заголовки; Строка 2 - это E1, P1, I1, D1; Строка 2 - это E1, P1, I1, D2; и т.п.
  4. В столбцах с E по G указаны затраты, связанные с Европой до порта США, от порта США до внутреннего порта и от внутреннего порта до распределительного центра. Это заполняется с помощью VLOOKUP и MATCH. например, в Е2 есть =VLOOKUP(A2,Data!$A$3:$E$5,MATCH(B2,Data!$A$2:$E$2,0),FALSE); в F2 есть =VLOOKUP(B2,Data!$A$11:$D$14,MATCH(C2,Data!$A$10:$D$10,0),FALSE); в G2 есть =VLOOKUP(C2,Data!$A$20:$F$22,MATCH(D2,Data!$A$19:$F$19,0),FALSE). Это все заполнены.
  5. Столбец H - это общая стоимость единицы. Чтобы сделать нежизнеспособные маршруты очевидными, я установил для них общую стоимость 1 000 000. например, H2 есть =IF(OR(E2=0,F2=0,G2=0),1000000,SUM(E2:G2)). Это заполнено.
  6. Столбец I - это количество единиц (контейнеров), которые перемещаются по этому маршруту. Эта колонка будет управляться решателем. Я инициализировал каждую строку с 1.
  7. Столбец J - это общая стоимость маршрута. например, J2 =H2*I2заполнен и заполнен.
  8. Другая таблица построена на той же вкладке, чтобы содержать целевую функцию и ограничения. Это от L1 до O19. Вот некоторые примеры расчетов: nUnits - это суммы из предыдущей таблицы, поэтому количество контейнеров из E1 равно =SUMIFS($I$2:$I$181,$A$2:$A$181,L2)количеству контейнеров из P1 =SUMIFS($I$2:$I$181,$B$2:$B$181,L5)и т. Д .; maxUnits извлекаются из вкладки Data, поэтому максимальное количество контейнеров из E1 равно =VLOOKUP(L2,Data!$A$3:$F$5,6,FALSE)максимальному числу контейнеров из I1 =HLOOKUP(L9,Data!$B$10:$D$15,6,FALSE)и т. д .; аналогично, единицы спроса извлекаются из вкладки «Данные».
  9. Я добавил дополнительное ограничение, чтобы гарантировать, что не будут выбраны нежизнеспособные маршруты.
  10. Целью является общая стоимость, которая является суммой столбца J.

Вот снимок экрана с вкладкой Equation перед запуском Solver. Несколько рядов скрыты.

enter image description here

Solver настроен следующим образом:

  1. Установить цель: есть $M$19
  2. До: это мин
  3. Изменяя переменные ячейки: есть $I$2:$I$181
  4. Сделать неотрицательные переменные неотрицательными не выбран (это обрабатывается с ограничениями)
  5. Выберите метод решения: эволюционный. Эволюционный гораздо быстрее, чем другие методы при обработке целочисленных ограничений.
  6. С учетом ограничений: это много ...
    • $I$2:$I$181 = integer - должен иметь целые номера контейнеров
    • $I$2:$I$181 >= 0 - не может нести отрицательные расходы
    • $M$2 <= $N$2дублируется для каждой строки, чтобы $M$11 <=$N$11- не нарушать максимальное количество контейнеров
    • $M$12 = $O$12дублируется для каждой строки, чтобы $M$16 = $O$16- удовлетворить спрос
    • $M$17 = $N$17 - не используйте нежизнеспособные варианты

Ниже приведен снимок экрана диалогового окна «Параметры решателя» ...

enter image description here

С этой установкой я получаю общую стоимость в размере 1 661 119,00 долл. США, при этом все требования удовлетворены, а ограничения не нарушены. Ниже приведен скриншот таблицы ограничений ...

enter image description here

Ниже приведен снимок экрана с таблицей затрат со всеми отфильтрованными нулевыми маршрутами ...

enter image description here

не могу проверить это решение. попробую на этой неделе. Спасибо Darklord Achilles 7 лет назад 0

Похожие вопросы