Класс ‘NelderMead’ #

Инструмент поиска решения методом Нелдера-Мида. Инструмент нелинейной оптимизации. Используется в эвристических алгоритмах и методах машинного обучения.

Метод Нелдера-Мида (симплекс метод, метод деформирующегося многогранника) — метод нелинейной оптимизации (поиска минимума) функции от нескольких переменных. Метод хорошо работает для задач с большим количеством переменных и оптимизирует целевую функцию довольно быстро и эффективно (особенно там, где не используется shrink — модификация). Метод широко используется для выбора параметров в машинном обучении.

Метод не гарантирует нахождение «глобального решения». Теория сходимости метода отсутствует. Метод может приводить к неверному решению даже на гладких (непрерывно дифференцируемых) функциях. Для настройки метода на решение конкретной задачи необходимо правильно настроить параметры метода и ограничения на значения изменяемых переменных.

Возможна ситуация, когда симплекс находится далеко от искомой точки и алгоритм, выполняя итерации, мало изменяет значение функции. В этом случае прибегают к эвристическому методу, заключающемуся в запуске алгоритма несколько раз из разных точек.

Свойства #

Contraction #

Overview
Параметр 'Сжатие (Contraction)' метода Нелдера-Мида. Значение по умолчанию 0.5.

Contraction   : Double

Значение свойства
Тип: Double
Значение параметра 'Сжатие (Contraction)'.

nm.Contraction = 0.5

almaGRID API

Convergence #

Overview
Текущее значение сходимости - абсолютная разность двух лучших значений функции в вершинах симплекса.

Convergence   : Double

Значение свойства (ReadOnly)
Тип: Double
Значение сходимости.

If nm.Convergence > 0.001 then
  'some code
End If

almaGRID API

Expansion #

Overview
Параметр 'Растяжение (Expansion)' метода Нелдера-Мида. Значение по умолчанию 2.

Expansion   : Double

Значение свойства
Тип: Double
Значение параметра 'Растяжение (Expansion)'.

nm.Expansion = 2

almaGRID API

InitDeltaIf0 #

Overview
Абсолютный сдвиг значения параметра при построении исходного симплекса, если значение параметра равно 0. Значение по умолчанию 0.0075.

InitDeltaIf0   : Double

Значение свойства
Тип: Double
Значение сдвига.

nm.InitDeltaIf0 = 0.0075

almaGRID API

InitDeltaIfNot0 #

Overview
Относительный сдвиг значения параметра при построении исходного симплекса, если значение параметра отлично от 0. Значение по умолчанию 0.05.

InitDeltaIfNot0   : Double

Значение свойства
Тип: Double
Значение сдвига.

nm.InitDeltaIf0 = 0.05

almaGRID API

Iterations #

Overview
Количество выполненных итераций.

Iterations   : Integer

Значение свойства (ReadOnly)
Тип: Integer
Количество итераций.

If nm.Iterations > 100 then
  'some code
End If

almaGRID API

Shrinkage #

Overview
Параметр 'Cокращение (Shrinkage)' метода Нелдера-Мида. Значение по умолчанию 0.5.

Shrinkage   : Double

Значение свойства
Тип: Double
Значение параметра 'Cокращение (Shrinkage)'.

nm.InitDeltaIf0 = 0.5

almaGRID API

Reflection #

Overview
Параметр 'Отражение (Reflection)' метода Нелдера-Мида. Значение по умолчанию 1.

Reflection   : Double

Значение свойства
Тип: Double
Значение параметра 'Отражение (Reflection)'.

nm.Reflection = 1

almaGRID API

Методы #

AddInput #

Overview
Добавляет величину (атрибут), значение которой будет изменено при работе метода (добавляет вершину к симплексу).

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'/>"

almaGRID API

AddOutput #

Overview
Добавляет желаемое значение величины (атрибута), которое метод будет пытьться достичь.

AddOutput  ( AttribDbl  Attrib , PrmXML  String , [Args  Dictionary  = null ] )

Параметры

AttribDbl Attrib Атрибут. Например, атрибут узла графа.

PrmXML String Строка параметров в виде <prm name1='value1' name2='value2' ... nameN='valueN'/>

Параметры:

mode - String - принимает значения
   'Min' - если требуется достичь минимального значения величины;
   'Max' - если требуется достичь максимального значения величины;
   'Desired' - если требуется достичь конкретного значения величины.

desiredValue - Double - вес условия по достижению значения величины. Значение по умолчанию: 1.

Args Dictionary Необязательный параметр. Значение по умолчанию null .

Именованный список Dictionary аргументов, который будет передан вызываемым скриптам. Список пар 'ИмяОбъекта'-'ЭкземплярОбъекта'.

 nm.AddOutput g1.Attrib("Result"), "<prm findingMode='Desired' desiredValue='230' />" 

almaGRID API

ClearInputs #

Overview
Очищает список величин, которые будут изменяться методом.

ClearInputs  

nm.ClearInputs

almaGRID API

ClearOutputs #

Overview
Очищает список величин, значения которых метод будет пиближать к желаемым.

ClearOutputs  

nm.ClearOutputs

almaGRID API

Reset #

Overview
Очищает все настройки метода.

Reset  

nm.Reset

almaGRID API

Run #

Overview
Выполняет итерации метода до тех пор, пока их количество не превысит заданное или критерий сходимости не станет меньше заданного.

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 - способ отображения прогресса выполнения инструмента в лог-файле. Принимает значения:
   'Dots' - шаги отображаются символом '.',
   'Values' - шаги отображаются значениями целевых и изменяемых атрибутов модели.
Значение по умолчанию 'Dots'.

Args Dictionary Именованный список Dictionary аргументов, который будет передан вызываемым скриптам. Список пар 'ИмяОбъекта'-'ЭкземплярОбъекта'.

nm.Run "aeca38b6b2824a27b4238f1f012d55f2", "", "<prm maxIterations='100' ConvergenceCriteria='1e-5'/>", Args

almaGRID API

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: