Выполняя обещание, данное DocentI, пишу о корректности вычислительного эксперимента. Пусть, у нас есть модель некоторой системы, реализованная в виде достаточно сложного комплекса компьютерных программ и включающая входные данные (вектор $%x$%), собственно вычислительную программу (функция или оператор $%A$%) и выходные данные (вектор $%y$%). Вычислительный эксперимент можно интерпретировать как $%y=Ax$% (оператор $%A$% действует на вектор$% х$%, в результате получается вектор $%y$%. Обычно требуется решить частично-обратную задачу: найти такие значения компонентов вектора $%x$% (либо ограничения на эти компоненты, либо связи между ними), чтобы компоненты вектора $%y$% были в том или ином смысле оптимальными. Это задача оптимизации, причем, если вектор $%y$% не удается свернуть в скаляр, оптимизация оказывается многокритериальной. Под корректностью понимается достоверность получаемых значений $%y$%. Некорректность может быть вызвана разными причинами, отметим основные 1) Вектор $%x$% оказался вне пределов области адекватности модели. Как правило, оценить априори структуру области адекватности невозможно, особенно при оптимизации. Но сама программа может отследить, что в процессе расчета значения некоторых величин оказались недопустимыми (например, температура превысила температуру плавления стенок камеры и т.п.). При этом удобно использовать не две градации "корректно"/"некорректно", а несколько, т.е. задавать "Уровень корректности", например, для температуры - нормальная, высокая, критическая (близкая к температуре плавления) и фатальная (выше температуры плавления). 2) Неправильно отработали какие-то вычислительные механизмы, например, не сошлась итерационная процедура. Здесь тоже могут быть критические и некритические ошибки, что порождает разные "Уровни корректности". Все это приводит к тому, что к выходным данным необходимо добавить еще одну величину - "индикатор корректности", который будет указывать, можно доверять полученным значениям $%y$%, или нет. 3) Особое значение индикатор корректности приобретает при оптимизации - оптимизировать нужно только по корректным точкам! С одной стороны, это большое усложнение и так сложной задачи, но с другой стороны появляется возможность сформулировать общий метод многокритериальной оптимизации с учетом корректности, если исходить из метода выделения главного критерия, а выполнение/невыполнение дополнительных критериев включить в индикатор в виде еще одного типа корректности "Оптимизационная корректность". Здесь тоже возможны свои уровни. Далее при решении конкретной задачи по каждому типу корректности можно выставить допустимый уровень. Прошу высказать соображения и замечания по поводу вышеизложенного. задан 22 Мар '12 17:31 Андрей Юрьевич |
Думаю, часть из описанных условий мне знакома (например, 1 и 3) и они не связаны напрямую именно с вычислительным экспериментом. Их можно, по крайней мере теоретически, описывать и задавать на уровне математической модели. Мой опыт моделирования (правда, очень давний) связан с комбинаторной оптимизацией, там "немного изменить" исходные параметры обычно не удается. Впрочем, и таких драматических вещей, как прожженная фольга, не было: в худшем случае пошлешь пару лишних машин на маршруты. П. 3 - замена оптимизации на соблюдение границ допустимости для выходных параметров - тоже обычный способ поставить задачу многокритериальной оптимизации, хотя и не единственный. Чисто вычислительные трудности (отсутствие сходимости и т.п.) - это, конечно, явления другого порядка. отвечен 22 Мар '12 23:48 DocentI Нет, речь идет не о методе тыка, о об оптимизации по большому числу (около 20) входных параметров. Оценить априори область адекватности в таком 20-мерном пространстве - нереально. При оптимизации задается область в виде параллелепипеда, который, естественно, будет включать и некорректные области, и в процессе оптимизации мы вполне можем оказаться в точке из такой области. Нужно иметь алгоритм для действий в этом случае.
(23 Мар '12 0:10)
Андрей Юрьевич
Да, я так и предполагала, что область возможных значений параметров слишком сложна. Это вроде как с некоторыми ОДЗ: если оно слишком сложное, проще найти решения и проверить их. Только при этом надо решения не потерять (что в случае оптимизации вполне возможно и даже ожидаемо).
(23 Мар '12 0:15)
DocentI
|
В первом пункте Вы, наверное, имели ввиду "Вектор Y оказался вне пределов...". Такое неудобство пытаются побороть, включая в оператор А разные "автоматические" ограничители, которые мешают Y принять неадекватные значения.
Нет, я имел в виду именно вектор x! Я же там пояснил в чем дело. Например, у Вас технологический ускоритель, который выстреливает пучок электронов через фольгу. Вы задаете параметры резонаторов фокусирующие потенциалы, толщину фольги и т.п. и смотрите интенсивность пучка на выходе. В процессе моделирования оказалось, что при заданных значениях параметров интенсивность замечательная, но температура фольги (это не выходной, а внутренний параметр, который входит в А, но не входит в y) оказалась 10000 градусов!
А почему нельзя было сразу ограничение на температуру наложить? Разве оно не было известно?
Ограничение-то известно, но сама температура зависит от того, каковы параметры пучка (диаметр, распределение плотности и т.п.) в момент прохождения фольги, т.к. именно он ее нагревает, а это заранее неизвестно, пучок нужно "довести" то фольги, т.е смоделировать его движение, а оно, в свою очередь, определяется параметрами резонаторов и фокусирующей системы (т.е. частью вектора x). Другая часть вектора x - параметры самой фольги (толщина, форма, материал и т.д.). Мы можем все это задать и посмотреть, что получится. А если бы мы заранее знали, что получится, - не было бы задачи.
Ясно. Т.е. зависимости "многоступенчатые". Трудные у Вас задачи! Хотя с тем, что "задачи бы не было" - не соглашусь. Оптимизация и при полной информации - сложное дело.
Пытаюсь спроецировать эти проблемы на "свои" задачи: были ли они там? Наверное, да. Например, когда распределяешь точки доставки по грузовикам последовательно, последние маршруты бывают обычно плохими, очень длинными и неудобными. И узнаешь об этом уже после того, как задача решена. Разница только в том, что ничего не сгорит и не взорвется, т.е. "допуск" гораздо больше.