Применение надстройки «Поиск решения» в практике бухгалтерского учета, страница 5

Особенность надстройки «Поиск решения» в том, что алгоритм ее работы  явно нигде не указывается. Рассмотрим подробнее параметры оптимизатора  для решения линейных целочисленных задач. Чтобы войти в установку параметров, нужно нажать кнопку Параметры (рис. 3). Значения параметров устанавливаются в окне, представленном на рис. 5.


Рис. 5 — Установка параметров оптимизации

В первых двух полях можно указать время (в секундах) либо предельное число итераций работы алгоритма. Эти значения не критичны. После остановки можно нажать на кнопку «Продолжить» и терпеливо дожидаться результатов. Можно остановить оптимизатор в любой момент, нажав на клавишу Esc.

В поле «Относительная погрешность» задается уровень точности, с какой должны выполняться ограничения.

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

Поле «Допустимое отклонение» используется в целочисленных задачах и указывает допустимое отклонение в процентах от искомого  значения. При поиске максимума или минимума нужно указать допустимое отклонение равным нулю. Если поиск решения работает долго,  можно попытаться переформулировать задачу – задать конкретное значение целевой функции и установить в этом окне 1-5% отклонения (или даже больше). Следующее поле – «Сходимость» используется при решении нелинейных задач. Алгоритм GRG2 останавливается, если при пяти последних итерациях значения целевой функции отличаются друг от друга на величину, меньшую заданной в этом поле.  При решении линейных задач (установлен флажок «Линейная модель») это поле игнорируется.

Если задача линейная, имеет смысл отметить флажок «Линейная модель». При этом  будет использован более быстрый симплекс – метод, а при  целочисленных ограничениях  – метод ветвей и границ. Обратите внимание: модель должна быть линейной в математическом смысле этого понятия, т. е. должна содержать исключительно суммы произведений переменных на постоянные коэффициенты. Оптимизатор проверяет задачу на линейность, и если модель нелинейная, выдает сообщение «Условия для линейной модели не удовлетворяются».

Пометив пункт «Неотрицательные значения», мы укажем надстройке, что все изменяемые ячейки не могут быть меньше нуля. Ограничение вида «>=0» на переменные при этом можно не налагать.

Флажок «Автоматическое масштабирование» обязательно следует устанавливать, если задача плохо масштабирована, т. е. если значения входных переменных различаются на много порядков. Впрочем, установка этого флажка и в других случаях вреда  не приносит.

Если отметить пункт «Показывать результаты итераций», компьютер будет останавливаться и пищать после каждой итерации, а в таблице будут видны текущие результаты. При отыскании оптимума нелинейной функции  можно заметить, в какую сторону движется процесс и внести в модель коррективы. При использовании алгоритма ветвей и границ ход процесса предугадать невозможно и пользоваться этим  флажком не имеет смысла.

Кнопки в группах  «Оценки», «Разности» и «Метод поиска» предназначены для настройки алгоритма GRG2 и при установке флажка «Линейная модель» игнорируются. Об их назначении, а также  о других элементах управления надстройкой «Поиск решения» можно узнать из файла помощи (вызывается  кнопкой «Справка»). Краткий обзор надстройки (с примерами) можно найти в файле \Microsoft Office\Office\Examples\Solver\SOLVSAMP.XLS.   Ответы на оставшиеся вопросы по использованию надстройки можно найти  на сайте  ее разработчика - www.solver.com. К сожалению, поиск в литературе или в русскоязычном  интернете малоэффективен, т.к. большинство авторов цитируют либо файл помощи, либо друг друга.

Что делать, если оптимизатор не находит подходящего решения?

1.  Спросить себя - уверены ли вы, что подходящее решение существует? Попытайтесь привести  доказательства этой уверенности.

2.  Проверить, нет ли в модели ошибок. В частности, не защищены ли случайно от изменений влияющие ячейки в модели.

3.  Проверить ограничения и установку параметров оптимизатора. Говорят, что со сложной проблемой нужно переспать. Попробовать вернуться к модели утром.

4.  Практика показывает, что линейную целочисленную задачу с десятками переменных оптимизатор решает за приемлемое время даже на слабом (по нынешним меркам)  компьютере. Если модель очень большая, нельзя ли ее сократить? Например, сузить диапазон поиска, исключив часть переменных и откорректировав соответствующим образом искомое значение целевой функции?

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

6.  Если изменить стартовые условия, оптимизация может пойти по другому – возможно, более удачному пути. Правда, надстройка «Поиск решения» отличается в этом плане завидным постоянством  и часто «ходит по кругу».

И последнее. При поиске решения, оптимизатор пытается  удовлетворить все ограничения, в том числе требования к относительной погрешности и допустимому отклонению. В результате работы оптимизатора во влияющей ячейке, на которую наложено целочисленное ограничение, может оказаться  не целое число. Настоятельно рекомендуем использовать для влияющих целочисленных ячеек формат «общий», так как при этом сразу будет видна ячейка с нецелочисленным значением. Это поможет избежать проблем при переносе результатов оптимизации в бухгалтерскую программу. Если же использовать в модели функцию  округления до целых (например, =ОКРУГЛ(F2;0)), модель станет нелинейной.