Моя книга немного сложна, но основная проблема может быть проиллюстрирована кратким примером.Пусть Excel Solver работает с натуральными номерами
Давайте предположим, что у меня есть 5 ячеек в Excel: A, B, C, D и E.
A = 0
B = 5 * A
C = 0
D = 10 * C
E = B + D
В функции Excel Solver я выбираю ячейки E в качестве цели, которая должна быть максимально, и клетки A и C в качестве переменных клеток. Кроме того, я добавляю ограничение, что ячейка E не должна превышать 10, а второе ограничение состоит в том, что ячейки A и C должны быть целыми числами.
Идеальное решение состоит в том, что значение в ячейке A должно быть 0, а значение в ячейке C должно быть 10. Однако в более сложной версии этой проблемы Excel не может найти необязательное решение.
То, как выглядят текущие формулы, я ожидаю, что Excel может найти правильное решение, если excel использует только натуральные числа, чтобы найти оптимальное решение. Например, Excel в настоящее время будет рассматривать результат для A = 0,01 и C = 9,99. Вместо этого Excel должен строго сравнивать результаты для переменных вариантов, таких как A = 1 и C = 9.
Как заставить функцию решателя Excel работать только с натуральными номерами?
Хорошая идея! Реализовал это сразу. Однако следующая проблема заключается в том, что функция solver прекращает оптимизацию и сохраняет все значения в «0», считая, что это оптимально, поскольку все варианты от 0.0000001 до 0.4999999 округлены до 0 и, по-видимому, не улучшаются. Какие настройки для функции решателя могли бы избежать этого поведения? –
@TimoKrall Есть несколько способов решить эту проблему, которая может работать. Работа по проверке достоверности данных основана на «то, что, кажется, работает», и, как вы укажете, может слишком медленно увеличиваться, чтобы фактически найти точное значение, если мы округляем результаты. Попробуйте либо: (1) вручную ввести «приближение» вручную перед запуском. Это даст ему указание на величину количества, необходимое для решения. (2) вы можете «обмануть» проверку данных, сделав ее бесполезно запущенной в фоновом режиме, пока генератор случайных чисел прокручивается. Я отвечу на примере этого в своем ответе. –
Интересный метод. К сожалению, метод randbetween (0,3) не работает, потому что разумные значения изменяются только между 0 и 3 для каждой из 21 ячейки. Однако ограничение состоит в том, что общая сумма значений не должна превышать 6. Вероятность того, что 21 значение случайным образом вычерчена, так что 6 не превышает, однако, очень мала. Поэтому большинство случайных сравненных значений не удовлетворяют ограничению, а тем более оптимальным. –