Линейное программирование Excel Solver - PullRequest
0 голосов
/ 08 мая 2018

Я пытаюсь минимизировать целевую функцию в B19. Почему решатель не может найти подходящее решение? Я не могу понять В основном модель:

Variable:
- xi
Ограничения:
- XI является логическим
- sum(li * xi') < F
- li * xi > F', foreach i
Объективная функция:
- sum(xi * di)

1 Ответ

0 голосов
/ 08 мая 2018

Да, набор ограничений, который у вас есть, при объединении недопустим.Если вы немного расслабите их, Excel найдет оптимальное решение.

Сначала посмотрите на pi * xi > 0.6 for all i. Это делает две вещи.Поскольку все pi больше 0, все переменные xi должны быть равны 1. (0 невозможно)

Кроме того, посмотрите на последний столбец xi.Поскольку это число равно 0,2, даже при x = 1 xi * pi не может быть> 0,6.(Чтобы найти возможное решение, вы должны понизить P 'до 0,2

Теперь посмотрим на другое ограничение: sum of pi * xi < 5

Все ваши числа Пи складываются до 5.4.И из-за предыдущего набора ограничений все X вынуждены принимать значение 1. Таким образом, вы должны сделать B10, чтобы быть по крайней мере 5,4.

Все это говорит, я подозреваю, что вы не 'Я не хочу, чтобы ваш XI был двоичным.Возможно, вы хотите, чтобы они были 0 <= xi <= 1,, то есть они также могут принимать дробные значения.

После ослабления значений B10 и B16 Excel удалось найти решение.См. Изображение ниже.

enter image description here

Обновление на основе разъяснений ОП

  1. Ваш Сипеременные в порядке.0 означает, что такси работает, 1 означает, что оно будет отправлено на ремонт.

  2. Целевая функция: минимизировать стоимость ремонта (Sumproduct of Ci Xi) также хорошо.

  3. Вы должны изменить индивидуальное ограничение такси.Поскольку проблема определяет это, pi = 0 - это хорошо, pi из 1 - это плохо.Компания не хочет, чтобы ЛЮБОЕ такси имело свой пи больше порога P '.

    Ограничение: pi * (1-Xi) <= 0.6 (скажем)

    Подумайте об этом: как только пи в любом такси пересекаетпорог, он будет вынужден пойти на ремонт, так как Си должен будет стать 1.

  4. Глобальная доступность: для этого вы можете просто подвести итог «доступные такси» и сделатьубедитесь, что имеется больше требуемого минимума (скажем, 5)

    sum(1-xi) >=5

Если вы настроите свою модель Excel таким способом, вы получите выполнимое решение.

См. Изображение ниже:

enter image description here

Обновление 2: включая ограничение глобального индекса деградации

Если вместо ограничения 4, указанного выше, вам нужно ограничение, в котором сумма всех чисел Пи находится под некоторым лимитом, вы должны сделать следующее:

(1-xi) - это индикатор для такси в эксплуатации.

Таким образом, это ограничение становится:

Sum of pi * (1-xi) <= P'

Для удобства вы можете создать строку в Excel, который равен (1-xi), а затем используйте Sumproduct из этой строки и строки pi.

Надеюсь, что это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...