Excel Solver не подчиняется двоичному ограничению - PullRequest
4 голосов
/ 25 августа 2009

Я создал модель в Excel для использования совместно с Солвером. Это в основном работает. Единственная проблема заключается в том, что Солвер на самом деле не обрабатывает ограниченные ячейки как двоичные. Когда поиск решения найден, некоторые из них на самом деле равны 0,9999999, 1,0000000003, 0,0000017 и т. Д.

Я использую Excel 2004 на Mac OS X. Есть идеи?

Ответы [ 5 ]

11 голосов
/ 01 февраля 2011

Если двоичные значения далеки от 0 или 1, возможно, вам придется перейти к параметрам в окне Solver и проверить, установлен ли флажок «Игнорировать целочисленные ограничения».

2 голосов
/ 19 ноября 2012

У меня была похожая проблема, и я мог ее решить, выбрав опцию решателя и выбрав «Использовать автоматическое масштабирование». Я не уверен, что это решит вашу проблему или нет, но стоит попробовать.

2 голосов
/ 10 августа 2012

Если решатель не может найти решение в течение периода времени или допустимого количества итераций (или если нет правильного ответа), он не вернет двоичные ответы.

Один из возможных обходных путей, в зависимости от типа проблемы , которую вы пытаетесь решить и насколько точный ответ вам нужен , - это установить несколько ячеек (вероятно, с наименьшими значениями в ячейках, для которых вы рассчитываете) с ограничениями <=1 и >=0, а не двоичными. Изображение, которое вы предоставили, не отображается, поэтому я не совсем уверен, что вы искали.

(Может быть полезно настроить ячейку с sumproduct для ячеек, не заданных как двоичные; см. Ниже.)

Например, если вы пытаетесь решить в общей сложности 22 (что не имеет решения), вы начинаете с:

9   1
9   1
9   1
6   1
3   1

Если вы установите все значения во втором столбце как двоичные, вы получите:

9   0.5625
9   0.5625
9   0.5625
6   0.708333333
3   0.854166667

Если вы установите первые 3 как двоичные, а последние два как <=1 & >=0, вы получите:

9   0
9   1
9   1
6   0.333333333
3   0.666666667

Суммарный продукт для последних двух строк = 4, который затем можно использовать для ручного задания одного из двух последних как 1, а другого 0, в зависимости от того, хотите ли вы получить ответ немного ниже или выше цели.

2 голосов
/ 25 августа 2009

Из-за конечной точности компьютеров и природы алгоритмов оптимизации, в решатель встроены допуски. Я бы попробовал выбрать кнопку «Параметры» в диалоговом окне «Параметры решателя», а затем увеличить точность (скажем, по умолчанию 0,000001 до 0,00000001). Я не уверен, что это сработает, но стоит попробовать.

Моя компания производит решение для коммерческого класса, подключенное к Excel, под названием What’sBest. Если вышеперечисленное не работает, вы можете рассмотреть это. Вы можете найти больше информации на www.lindo.com

1 голос
/ 10 февраля 2012

Скорее всего, это не ваша проблема, но учтите, что в параметрах есть флажок Ignore Integer Constraints, который по умолчанию установлен в Excel Solver. По крайней мере, так обстоит дело в моей копии Excel 2011 для Mac.

...