Последний раз редактировалось apocalipse 26.12.2011, 14:21, всего редактировалось 1 раз.
Доброе время суток. Достаточно давно, для решения данной задачи была написана программа на языке Object Pascal (Delphi) Сейчас потребовалось заново реализовать этот алгоритм, но, к сожалению исходники были частично утрачены. Ввод и проверка данных уже реализована, остался, собственно, сам алгоритм метода. В предыдущей реализации был дополнительно использован метод Хука-Дживса, но как сейчас его связать с основным методом - я не представляю. На этот раз решил реализовать методы штрафных и барьерных функций в одном приложении (предыдущая реализация была в разных).
сейчас алгоритм работы приложения построен следующим образом:
1. Указание метода (барьерных или штрафных функций) 2. Ввод выражения целевой функции 3. Ввод ограничений 4. Ввод начальных значений 5. Ввод значений параметров --- точность алгоритма, E (E > 0) --- параметры метода штрафов --- - параметр R (R > 0) --- - параметр C (C > 1) --- параметры метода Хука-Дживса --- - параметр D (D >= E) --- - параметр L (L > 0) --- - параметр A (A > 1)
(назначение некоторых параметров я уже, к сожалению, не помню)
Собственно, алгоритм расчета, по шагам (как оно у меня было раньше расписано в исходниках, но без комментариев):
1. какое-то действие (???) 2. опять какое-то действие (???) 3. сравнение значения целевой функции [F(n)] с ее же значением, но на предыдущей итерации [F(n-1)]. если F(n) < F(n-1) {и выполняются ограничения} то к шагу 4, иначе - к шагу 5 4. принимаем значения X(i)=X(i-1) 5. если D <= E, то конец алгоритма, иначе D=D/A и переход к шагу 2
Отсюда вопрос, какие действия происходят на шагах 1, 2 и где нужно применять алгоритм Хука-Дживса?
Заранее благодарен.
|