48263 (Программная модель поиска глобального минимума нелинейных "овражных" функций двух переменных), страница 3
Описание файла
Документ из архива "Программная модель поиска глобального минимума нелинейных "овражных" функций двух переменных", который расположен в категории "". Всё это находится в предмете "информатика" из 1 семестр, которые можно найти в файловом архиве . Не смотря на прямую связь этого архива с , его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "информатика, программирование" в общих файлах.
Онлайн просмотр документа "48263"
Текст 3 страницы из документа "48263"
Универсального метода (алгоритма), с помощью которого можно было бы успешно решать разнообразные задачи оптимизации, не существует. Поэтому для решения каждого конкретного класса задач используют (и, как правило, не один) «свой» численный метод. Следует помнить, что эффективность численного решения зависит от того, насколько полно и точно отражается в применяемом методе специфика данной задачи, ее «индивидуальные» особенности. Данную программную модель рекомендуется использовать для поиска глобального минимума нелинейных «овражных» функции двух переменных.
Конечно, на этом можно было бы и остановиться. Метод успешно работает, довольно быстро находит минимум функции, но этот поиск можно было бы еще ускорить. Следует разработать способ выбора овражного шага, т.е. величина шага должна меняться от этапа к этапу в зависимости от расположении локального минимума функции. Эффективность рассмотренного метода возросла бы еще больше, т.к. метод зависит от величин овражных шагов h1, h2. Но здесь есть свои трудности, если овражный шаг слишком велик, то можно довольно далеко отойти от линии «дна оврага»; если же этот шаг мал, то продвижение будет незначительным. Величину шага нужно подбирать эмпирически, учитывая известные свойства минимизируемой функции.
Литература
1. Юдин Д.Б., Юдин А.Д. «Число и мысль» М.: Знание, 2005. С.190
2. Немировский А.С., Юдин Д.Б. «Информационная сложность математического моделирования» Изв. АНСССР. Тех. Кибернетика. 2003 №1 С.88-117
3. Уайнд Д. «Методы поиска экстремума». М.: Наука, 2007. С.267
4. Гельфонд И.М., Цетлин М.Л. «О некоторых способах управления сложными системами». УМН, 2002. Т.27. С.3-26
5. Федоренко Р.П. «Об одном алгоритме решения задач математического программирования». Журнал вычислительная математика, 2006. Т.22 №6 С.1331-1343
6. Поляк Б.Т. «Введение в оптимизацию» М.: Наука, 2003. С.384
7. Ногин В.Д. «Основы теории оптимизации» М.: Знание, 2007. С99-122
8. Ларичев О.И., Горвиц Г.Г. «Методы поиска локальных экстремумов овражных функций» М.: Наука, 2003. С.5-12
Приложение
Код модуля
Option Explicit
Dim i, s, j, h1, h2
Sub Кнопка2_Щелкнуть()
Form1.Show 'Ввод исходных данных
End Sub
Sub Кнопка3_Щелкнуть()
j = 1
i = 2 'Номер шага(этапа)
Do 'Цикл нахождения минимума функции
h1 = Range("aa3") 'Присвоение переменным
h2 = Range("aa4") 'h1,h2 значения шага
Do
Range("z1").Select 'Сохранение предыдущего
s = ActiveCell 'значения функции
'Вычисление новых начальных точек
Range("v1").Select
ActiveCell = Range("x1")
Range("v2").Select
ActiveCell = Range("x2")
Range("x1").Select
ActiveCell = ActiveCell - h1
Range("x2").Select
ActiveCell = ActiveCell - h2
'Вывод в таблицу новых начальных
'точек и значение функции в этих точках
Range("a3", "f23").Select
ActiveCell(j, "a") = Range("x1")
ActiveCell(j, "b") = Range("x2")
ActiveCell(j, "f") = Range("z1")
j = j + 1
'Cравнение нового значения функции с предыдущим
Loop While Range("z1") < s
j = j - 1
Range("x1").Select
ActiveCell = Range("v1")
Range("x2").Select
ActiveCell = Range("v2")
'Вывод в таблицу новых начальных точек,
'градиент поля функции, модуль градиента
'и значение функции в новых начальных точках
Range("a3", "g23").Select
ActiveCell(j, "a") = Range("x1")
ActiveCell(j, "b") = Range("x2")
ActiveCell(j, "c") = Range("w1")
ActiveCell(j, "d") = Range("w2")
ActiveCell(j, "e") = Range("w3")
ActiveCell(j, "f") = Range("z1")
'Вывод номера шага(этапа) вычисления минимума функции
ActiveCell(j, "g") = i
j = j + 1
i = i + 1
Range("w3").Select
'Сравнение значения модуля градиента и погрешности
Loop While ActiveCell > Range("y3")
End Sub
Sub Кнопка4_Щелкнуть()
'Очистка диапазона ячеек
Range("a2", "g40").Clear
Range("x1", "x2").Clear
Range("y1", "y3").Clear
Range("v1", "v2").Clear
Range("z1").Clear
End Sub
Код формы “Метод наискорейшего спуска”
Private Sub CB1_Click()
End
End Sub
Private Sub CB2_Click()
Range("Z1").Select
Lbl1.Caption = ActiveCell
Range("c2").Select
ActiveCell = Range("w1")
Range("d2").Select
ActiveCell = Range("w2")
Range("e2").Select
ActiveCell = Range("w3")
'Вывод номера шага нахождения минимума функции
Range("g2").Select
ActiveCell = 1
End Sub
Private Sub TB1_Change()
Range("X1").Select
ActiveCell = TB1.Text
Range("a2").Select
ActiveCell = Range("x1")
End Sub
Private Sub TB2_Change()
Range("X2").Select
ActiveCell = TB2.Text
Range("b2").Select
ActiveCell = Range("x2")
End Sub
Private Sub TB3_Change()
Range("Y1").Select
ActiveCell = TB3.Text
End Sub
Private Sub TB5_Change()
Range("Y3").Select
ActiveCell = TB5.Text
End Sub
Private Sub TB4_Change()
Range("Y2").Select
ActiveCell = TB4.Text
End Sub
Private Sub TB6_Change()
Range("Z1").Select
ActiveCell = TB6.Text
Range("f2").Select
ActiveCell = Range("z1")
End Sub