Новый участник
Сообщения: 33
Благодарности: 0
|
Профиль
|
Сайт
|
Отправить PM
| Цитировать
Эту ошибку наблюдаю уже много лет – начиная с версий 1997-2003.
Пусть средствами Excel при установленной надстройке «Поиск решения» требуется решить две взаимно сопряжённые задачи линейного программирования: стандартную (z=Cx->max, Ax<=B, x>=0) и двойственную к ней (w=Bu->min, A(трансп)u>=C, u>=0). Пользуюсь тем, что при сохранении документа последние установки диалогового окна «Поиск решения» всегда сохраняются для каждого листа, там, где они заполнены. Вот и приходится решать эти сопряжённые задачи на разных листах. В прилагаемом заархивированном файле «LinearOpt.xls» при указанных исходных данных уже содержатся оптимальные решения обеих задач.
Действительно – в случае, если размерности задачи прежние, но изменились какие-либо исходные данные, достаточно их поменять – в прилагаемом файле на листе «Прямая задача» они выделены полужирным шрифтом. Можно также обнулить массив x. Затем на этом же листе запустить «Поиск решения» - ничего не меняя, «Выполнить». На листе «Двойственная задача» лучше обнулить массив u и затем выполнить свой «Поиск решения», также ничего не меняя. В результате значения z и w обязаны совпасть, а массивы (Ax-B)u и (A(трансп)u-C)x обязаны состоять из нолей (хотя бы примерно в пределах погрешности вычислений).
При решении этих задач в книге оба раза сохранены сценарии. Но, увы... Если в параметрах Excel: в версии 2007, пункт «Дополнительно», раздел «Параметры правки» установлен флаг «Использовать системные разделители» (т.е. в качестве разделителя целой и дробной части – как правило, запятая), а в других версиях – аналогично, то при запуске «Диспетчера сценариев» на каждом листе будут подставлены вроде ранее полученные решения, но... в качестве десятичного разделителя будут уже точки! Таким образом, Excel перестаёт воспринимать эти данные как числа, и в использующих их формулах везде появятся ошибки «#ЗНАЧ!».
Что приходится делать? Прежде чем вывести какой-либо сохранённый сценарий, в параметрах сбрасываю флаг «Использовать системные разделители» и в качестве разделителя целой и дробной части явно указываю точку, только после этого вывожу сценарий – всё отображается корректно. Но если привыкли к запятой, снова возвращаем этот флаг и т.д. Думаю, не очень удобно. Особенно тем, кто пользуется Excel на уровне «чайников» и довольствуется готовыми формулами, которые составлены более опытными пользователями – подобных «чайников» знаю превеликое множество!
Таким образом, из-за этой внутренней ошибки, вывод сценариев с решениями нескольких задач оптимизации на одном листе затруднителен. Для её обхода использую макросы. Но тогда для чего же нужен этот самый диспетчер сценариев?
|