Класс ‘NelderMead’ #
Инструмент поиска решения методом Нелдера-Мида. Инструмент нелинейной оптимизации. Используется в эвристических алгоритмах и методах машинного обучения.
Метод Нелдера-Мида (симплекс метод, метод деформирующегося многогранника) — метод нелинейной оптимизации (поиска минимума) функции от нескольких переменных. Метод хорошо работает для задач с большим количеством переменных и оптимизирует целевую функцию довольно быстро и эффективно (особенно там, где не используется shrink — модификация). Метод широко используется для выбора параметров в машинном обучении.
Метод не гарантирует нахождение «глобального решения». Теория сходимости метода отсутствует. Метод может приводить к неверному решению даже на гладких (непрерывно дифференцируемых) функциях. Для настройки метода на решение конкретной задачи необходимо правильно настроить параметры метода и ограничения на значения изменяемых переменных.
Возможна ситуация, когда симплекс находится далеко от искомой точки и алгоритм, выполняя итерации, мало изменяет значение функции. В этом случае прибегают к эвристическому методу, заключающемуся в запуске алгоритма несколько раз из разных точек.
Свойства #
Contraction #
Описание
Параметр 'Сжатие (Contraction)' метода Нелдера-Мида. Значение по умолчанию 0.5.
Contraction : Double
Значение свойства
Тип: Double
Значение параметра 'Сжатие (Contraction)'.
nm.Contraction = 0.5
Convergence #
Описание
Текущее значение сходимости - абсолютная разность двух лучших значений функции в вершинах симплекса.
Convergence : Double
Значение свойства (ReadOnly)
Тип: Double
Значение сходимости.
If nm.Convergence > 0.001 then 'some code End If
Expansion #
Описание
Параметр 'Растяжение (Expansion)' метода Нелдера-Мида. Значение по умолчанию 2.
Expansion : Double
Значение свойства
Тип: Double
Значение параметра 'Растяжение (Expansion)'.
nm.Expansion = 2
InitDeltaIf0 #
Описание
Абсолютный сдвиг значения параметра при построении исходного симплекса, если значение параметра равно 0. Значение по умолчанию 0.0075.
InitDeltaIf0 : Double
Значение свойства
Тип: Double
Значение сдвига.
nm.InitDeltaIf0 = 0.0075
InitDeltaIfNot0 #
Описание
Относительный сдвиг значения параметра при построении исходного симплекса, если значение параметра отлично от 0. Значение по умолчанию 0.05.
InitDeltaIfNot0 : Double
Значение свойства
Тип: Double
Значение сдвига.
nm.InitDeltaIf0 = 0.05
Iterations #
Описание
Количество выполненных итераций.
Iterations : Integer
Значение свойства (ReadOnly)
Тип: Integer
Количество итераций.
If nm.Iterations > 100 then 'some code End If
Shrinkage #
Описание
Параметр 'Cокращение (Shrinkage)' метода Нелдера-Мида. Значение по умолчанию 0.5.
Shrinkage : Double
Значение свойства
Тип: Double
Значение параметра 'Cокращение (Shrinkage)'.
nm.InitDeltaIf0 = 0.5
Reflection #
Описание
Параметр 'Отражение (Reflection)' метода Нелдера-Мида. Значение по умолчанию 1.
Reflection : Double
Значение свойства
Тип: Double
Значение параметра 'Отражение (Reflection)'.
nm.Reflection = 1
Методы #
AddInput #
Описание
Добавляет величину (атрибут), значение которой будет изменено при работе метода (добавляет вершину к симплексу).
AddInput ( AttribDbl Attrib , [PrmXML String = '' ], [Args Dictionary = null ] )
Параметры
AttribDbl | Attrib | Атрибут. Например, атрибут узла графа.
|
PrmXML | String | Необязательный параметр. Значение по умолчанию '' . Строка параметров в виде <prm name1='value1' name2='value2' ... nameN='valueN'/> Параметры: minVal - Double - условие по нижней границе значения атрибута, которое метод будет пытаться выполнить. Значение по умолчанию: нет ограничения. maxVal - Double - условие по нижней границе значения атрибута, которое метод будет пытаться выполнить. Значение по умолчанию: нет ограничения. minValWeight - Double - вес условия по соблюдению нижней границы значения атрибута. Значение по умолчанию: 1. maxValWeight - Double - вес условия по соблюдению верхней границы значения атрибута. Значение по умолчанию: 1. |
Args | Dictionary | Необязательный параметр. Значение по умолчанию null . Именованный список Dictionary аргументов, который будет передан вызываемым скриптам. Список пар 'ИмяОбъекта'-'ЭкземплярОбъекта'.
|
nm.AddInput Node.Attrib("Self"), "<prm minVal='0' minValWeight='5.2'/>"
AddOutput #
Описание
Добавляет желаемое значение величины (атрибута), которое метод будет пытьться достичь.
AddOutput ( AttribDbl Attrib , PrmXML String , [Args Dictionary = null ] )
Параметры
AttribDbl | Attrib | Атрибут. Например, атрибут узла графа.
|
PrmXML | String | Строка параметров в виде <prm name1='value1' name2='value2' ... nameN='valueN'/> Параметры: mode - String - принимает значения desiredValue - Double - вес условия по достижению значения величины. Значение по умолчанию: 1. |
Args | Dictionary | Необязательный параметр. Значение по умолчанию null . Именованный список Dictionary аргументов, который будет передан вызываемым скриптам. Список пар 'ИмяОбъекта'-'ЭкземплярОбъекта'.
|
nm.AddOutput g1.Attrib("Result"), "<prm findingMode='Desired' desiredValue='230' />"
ClearInputs #
Описание
Очищает список величин, которые будут изменяться методом.
ClearInputs
nm.ClearInputs
ClearOutputs #
Описание
Очищает список величин, значения которых метод будет пиближать к желаемым.
ClearOutputs
nm.ClearOutputs
Reset #
Описание
Очищает все настройки метода.
Reset
nm.Reset
Run #
Описание
Выполняет итерации метода до тех пор, пока их количество не превысит заданное или критерий сходимости не станет меньше заданного.
Run ( TagId String , TagLabel String , PrmXML String , Args Dictionary )
Параметры
TagId | String | Идентификатор тега (узла графа). Строка длинной не более 32 символов. Идентификато содержит цифры от 0 до 9 и латинские буквы 'a', 'b', 'c', 'd', 'e' и 'f'. В идентификаторе, определенном пользователем, должен присутствовать хотя бы один буквенный символ. Например, 'fa0234'. Идентификатор должн быть уникальным. Тег, в котором сохранен скрипт для расчета модели. Например, скрипт для расчета атрибутов узлов графовой модели. Скрипт будет выполнен полностью в начале работы метода. При пересчете модели в ходе выполнения итераций инструмента будет вызываться только метод 'Main', который должен быть объявлен в скрипте. Если метод 'Main' в скрипте отсутствует, то возникнет ошибка скриптового хоста 'HRESULT: 0x80020101'. |
TagLabel | String | Название тега на текущем языке, например, 'Тег1'. Тег, в котором сохранен скрипт для расчета модели. См. описание параметра TagId. Если задан TagId то TagLabel игнорируется. |
PrmXML | String | Строка параметров в виде <prm name1='value1' name2='value2' ... nameN='valueN'/> Параметры: maxIterations - целое положительное число - максимальное количество итераций, которое будет выполнено. Значение по умолчанию 100. convergenceCriteria - Double - сходимость, по достижению которой метод прекратит дальнейшие итерации. Значение по умолчанию 0.000001. progressWritingSkip - Integer - количество итераций, которые будут пропускаться при записи лога. Значение по умолчанию 100. progressStyle - String - способ отображения прогресса выполнения инструмента в лог-файле. Принимает значения: |
Args | Dictionary | Именованный список Dictionary аргументов, который будет передан вызываемым скриптам. Список пар 'ИмяОбъекта'-'ЭкземплярОбъекта'.
|
nm.Run "aeca38b6b2824a27b4238f1f012d55f2", "", "<prm maxIterations='100' ConvergenceCriteria='1e-5'/>", Args