Опции генетического алгоритма

Приложение оптимизации по сравнению с командной строкой

Существует два способа задать опции для генетического алгоритма, в зависимости от того, используете ли вы приложение Оптимизации или вызываете функции ga или gamultiobj в командной строке:

  • Если вы используете приложение Оптимизации (optimtool), выберите опцию из выпадающего списка или введите значение опции в текстовом поле.

  • Если вы вызываете ga или gamultiobj в командной строке, создаете options с помощью функционального optimoptions, можно следующим образом:

    options = optimoptions('ga','Param1', value1, 'Param2', value2, ...);
    % or
    options = optimoptions('gamultiobj','Param1', value1, 'Param2', value2, ...);

    См. Опции Установки в Командной строке для примеров.

В этом разделе каждая опция перечислена двумя способами:

  • Его меткой, как это появляется в приложении Оптимизации

  • Его именем поля в options

Например:

  • Population type является меткой опции в приложении Оптимизации.

  • PopulationType является соответствующим полем options.

Постройте опции

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

Plot interval (PlotInterval) задает количество поколений между последовательными вызовами функции построения графика.

Можно выбрать любую из следующих функций построения графика в панели Plot functions и для ga и для gamultiobj:

  • Score diversity ('gaplotscorediversity') строит гистограмму очков при каждой генерации.

  • Stopping ('gaplotstopping') строит уровни критерия остановки.

  • Genealogy ('gaplotgenealogy') строит генеалогию людей. На строки от одной генерации до следующего наносят цветную маркировку можно следующим образом:

    • Красные линии указывают на дочерние элементы мутации.

    • Синие строки указывают на перекрестные дочерние элементы.

    • Черные линии указывают на элитных людей.

  • Scores ('gaplotscores') строит множество людей при каждой генерации.

  • Distance ('gaplotdistance') строит среднее расстояние между людьми при каждой генерации.

  • Selection ('gaplotselection') строит гистограмму родительских элементов.

  • Max constraint ('gaplotmaxconstr') строит максимальное нелинейное ограничительное нарушение при каждой генерации. Для ga, доступного только для Augmented Lagrangian ('auglag') Nonlinear constraint algorithm (NonlinearConstraintAlgorithm) опция. Поэтому не доступный для ограниченных целым числом проблем, когда они используют Penalty ('penalty') нелинейный ограничительный алгоритм.

  • Custom function позволяет вам использовать собственные функции построения графика. Задавать функцию построения графика, если вы используете приложение Оптимизации,

    • Выберите Custom function.

    • Введите @myfun в текстовое поле, где myfun является именем вашей функции.

    Смотрите структуру функций построения графика.

Следующие функции построения графика доступны для ga только:

  • Best fitness ('gaplotbestf') строит лучшее значение счета и средний счет по сравнению с генерацией.

  • Best individual ('gaplotbestindiv') строит векторные записи человека с лучшим значением функции фитнеса в каждой генерации.

  • Expectation ('gaplotexpectation') строит ожидаемое количество дочерних элементов по сравнению с необработанными очками при каждой генерации.

  • Range ('gaplotrange') строит минимум, максимум и средние значения счета в каждой генерации.

Следующие функции построения графика доступны для gamultiobj только:

  • Pareto front ('gaplotpareto') строит переднюю сторону Парето для первых двух целевых функций.

  • Average Pareto distance ('gaplotparetodistance') строит столбчатую диаграмму расстояния каждого человека от его соседей.

  • Rank histogram ('gaplotrankhist') строит гистограмму рангов людей. Люди ранга 1 находятся на границе Парето. Люди ранга 2 ниже, чем по крайней мере один ранг 1 человек, но не ниже, чем какие-либо люди от других рангов и т.д.

  • Average Pareto spread ('gaplotspread') строит средний спред как функцию номера итерации.

Чтобы отобразить график при вызове ga или gamultiobj из командной строки, установите опцию PlotFcn быть встроенным именем функции построения графика или указателем на функцию построения графика. Например, чтобы отобразить лучший график фитнеса, установите options можно следующим образом:

options = optimoptions('ga','PlotFcn','gaplotbestf');

Чтобы отобразить несколько графиков, используйте массив ячеек встроенных имен функции построения графика или cell-массива указателей на функцию:

options = optimoptions('ga','PlotFcn', {@plotfun1, @plotfun2, ...});

где @plotfun1, @plotfun2, и так далее является указателями на функцию в функции построения графика.

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

Структура функций построения графика

Первая строка функции построения графика имеет эту форму:

function state = plotfun(options,state,flag)

Входные параметры к функции

  • опции Структура, содержащая все текущие настройки опций.

  • state — Структура, содержащая информацию о текущей генерации. Структура состояния описывает поля state.

  • флаг Описание этапа алгоритм находится в настоящее время в. Для получения дополнительной информации см. Опции Выходной функции.

Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры функции.

Выходным аргументом state является структура состояния также. Передайте входной параметр, измененный, если вам нравится; смотрите Изменение Структуры состояния. Чтобы остановить итерации, установите state.StopFlag на непустой вектор символов, такой как 'y'.

Структура состояния

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

  • Generation — Текущий номер генерации

  • Время начала Время, когда генетический алгоритм, запущенный, возвращенный tic

  • Остановка флага Причина остановки, вектора символов

  • LastImprovement — Генерация, при которой произошло последнее улучшение значения фитнеса

  • LastImprovementTime — Время, в которое произошло последнее улучшение

  • Best — Вектор, содержащий лучший счет в каждой генерации

  • how'augLag' нелинейный ограничительный алгоритм сообщает об одном из следующих действий: 'Infeasible point', 'Update multipliers' или 'Increase penalty'; смотрите Увеличенный лагранжевый Генетический алгоритм

  • FunEval — Совокупное число функциональных оценок

  • Expectation — Ожидание выбора людей

  • Selection — Индексы людей выбраны для элиты, перекрестного соединения и мутации

  • Population — Генеральная совокупность в текущей генерации

  • Score — Множество текущей генеральной совокупности

  • NonlinIneq — Нелинейные ограничения неравенства в текущей точке, представьте только, когда нелинейная ограничительная функция задана, нет никаких целочисленных переменных, flag не является 'interrupt', и NonlinearConstraintAlgorithm является 'auglag'

  • NonlinEq — Нелинейные ограничения равенства в текущей точке, представьте только, когда нелинейная ограничительная функция задана, нет никаких целочисленных переменных, flag не является 'interrupt', и NonlinearConstraintAlgorithm является 'auglag'

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

  • Population — Генеральная совокупность в текущей генерации

  • Score — Множество текущей генеральной совокупности, Population-by-nObjectives матрица, где nObjectives является количеством целей

  • Generation — Текущий номер генерации

  • Время начала Время, когда генетический алгоритм, запущенный, возвращенный tic

  • Остановка флага Причина остановки, вектора символов

  • FunEval — Совокупное число функциональных оценок

  • Selection — Индексы людей выбраны для элиты, перекрестного соединения и мутации

  • Ранг Вектор рангов участников в генеральной совокупности

  • Distance — Вектор расстояний каждого члена генеральной совокупности самому близкому соседнему участнику

  • AverageDistance — Среднее значение Distance

  • Spread — Вектор, где записи являются распространением в каждой генерации

  • mIneq — Количество нелинейных ограничений неравенства

  • mEq — Количество нелинейных ограничений равенства

  • mAll — Общее количество нелинейных ограничений, mAll = mIneq + mEq

  • C Нелинейные ограничения неравенства в текущей точке, PopulationSize-by-mIneq матрица

  • Ceq — Нелинейные ограничения равенства в текущей точке, PopulationSize-by-mEq матрица

  • isFeas — Выполнимость генеральной совокупности, логического вектора с элементами PopulationSize

  • maxLinInfeas — Максимум infeasibility относительно линейных ограничений для генеральной совокупности

Опции генеральной совокупности

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

Population type (PopulationType) задает тип входа к функции фитнеса. Типы и их ограничения:

  • Double vector ('doubleVector') — Используйте эту опцию, если люди в генеральной совокупности имеют, вводят double. Используйте эту опцию для частично-целочисленного программирования. Это значение по умолчанию.

  • Bit string ('bitstring') — Используйте эту опцию, если у людей в генеральной совокупности есть компоненты, которые являются 0 или 1.

    Внимание

    Люди в генеральной совокупности Bit string являются векторами типа double, не строки или символы.

    Для Creation function (CreationFcn) и Mutation function (MutationFcn), используйте Uniform ('gacreationuniform' и 'mutationuniform') или Custom. Для Crossover function (CrossoverFcn) используйте Scattered ('crossoverscattered'), Single point ('crossoversinglepoint'), Two point ('crossovertwopoint') или Custom. Вы не можете использовать Hybrid function, и ga игнорирует все ограничения, включая границы, линейные ограничения и нелинейные ограничения.

  • Custom — Для Crossover function и Mutation function, используйте Custom. Для Creation function или используйте Custom или обеспечьте Initial population. Вы не можете использовать Hybrid function, и ga игнорирует все ограничения, включая границы, линейные ограничения и нелинейные ограничения.

Population size (PopulationSize) задает, сколько людей там находится в каждой генерации. С размером значительной части населения генетический алгоритм ищет пробел решения более тщательно, таким образом, уменьшая шанс, что алгоритм возвращает локальный минимум, который не является глобальным минимумом. Однако размер значительной части населения также заставляет алгоритм запускаться более медленно.

Если вы устанавливаете Population size на вектор, генетический алгоритм создает нескольких поднаселение, номер которого является длиной вектора. Размер каждой подгенеральной совокупности является соответствующей записью вектора. См. Опции Миграции.

Creation function (CreationFcn) задает функцию, которая создает начальную генеральную совокупность для ga. Не задавайте функцию создания с целочисленными проблемами, потому что ga заменяет любой выбор, который вы делаете. Выберите из:

  • [] использует функцию создания по умолчанию для вашей проблемы.

  • Uniform ('gacreationuniform') создает случайную начальную генеральную совокупность с равномерным распределением. Это - значение по умолчанию, когда нет никаких линейных ограничений, или когда существуют целочисленные ограничения. Равномерное распределение находится в начальной области значений генеральной совокупности (InitialPopulationRange). Значениями по умолчанию для InitialPopulationRange является [-10;10] для каждого компонента или [-9999;10001], когда существуют целочисленные ограничения. Эти границы переключаются и масштабируются, чтобы совпадать с любыми существующими границами lb и ub.

    Внимание

    Не используйте 'gacreationuniform', когда у вас будут линейные ограничения. В противном случае ваша генеральная совокупность не может удовлетворить линейные ограничения.

  • Feasible population ('gacreationlinearfeasible'), значение по умолчанию, когда существуют линейные ограничения и никакие целочисленные ограничения, создает случайную начальную генеральную совокупность, которая удовлетворяет все границы и линейные ограничения. Если существуют линейные ограничения, Feasible population создает многих людей на контурах области ограничений и создает хорошо рассеянную генеральную совокупность. Feasible population игнорирует Initial range (InitialPopulationRange).

    'gacreationlinearfeasible' вызывает linprog, чтобы создать выполнимую генеральную совокупность относительно границ и линейных ограничений.

    Для примера, показывающего его поведение, смотрите Пользовательскую Функцию построения графика и Линейные Ограничения в ga.

  • Nonlinear Feasible population ('gacreationnonlinearfeasible') является функцией создания по умолчанию для 'penalty' нелинейный ограничительный алгоритм. Для получения дополнительной информации смотрите Параметры ограничения.

  • Custom позволяет вам записать свою собственную функцию создания, которая должна сгенерировать данные типа, который вы задаете в Population type. Чтобы задать создание функционируют, если вы используете приложение Оптимизации,

    • Установите Creation function на Custom.

    • Установите Function name на @myfun, где myfun является именем вашей функции.

    Если вы используете ga, набор

    options = optimoptions('ga','CreationFcn',@myfun);

    Ваша функция создания должна иметь следующий синтаксис вызова.

    function Population = myfun(GenomeLength, FitnessFcn, options)

    Входные параметры к функции:

    • Genomelength — Количество независимых переменных для функции фитнеса

    • FitnessFcn — Функция фитнеса

    • опции Опции

    Функция возвращает Population, начальную генеральную совокупность для генетического алгоритма.

    Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры функции.

    Внимание

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

Initial population (InitialPopulationMatrix) задает начальную генеральную совокупность для генетического алгоритма. Значением по умолчанию является [], в этом случае ga использует Creation function по умолчанию, чтобы создать начальную генеральную совокупность. Если вы вводите непустой массив в поле Initial population, массив должен иметь не больше, чем строки Population size, и точно столбцы Number of variables. Если у вас есть генеральная совокупность начальной буквы partial, имея в виду меньше, чем строки Population size, то генетический алгоритм вызывает Creation function, чтобы сгенерировать остающихся людей.

Initial scores (InitialScoreMatrix) задает начальную музыку к начальной генеральной совокупности. Начальные очки могут также быть частичными. Не задавайте начальные очки с целочисленными проблемами, потому что ga заменяет любой выбор, который вы делаете.

Initial range (InitialPopulationRange) задает область значений векторов в начальной генеральной совокупности, которая сгенерирована функцией создания gacreationuniform. Можно установить Initial range быть матрицей с двумя строками и столбцами Number of variables, каждый столбец которых имеет форму [lb;ub], где lb является нижней границей и ub, верхняя граница для записей в той координате. Если вы задаете Initial range, чтобы быть 2 1 вектор, каждая запись расширена до постоянной строки длины Number of variables. Если вы не задаете Initial range, значением по умолчанию является [-10;10] ([-1e4+1;1e4+1] для ограниченных целым числом проблем), измененный, чтобы совпадать с любыми существующими границами.

Смотрите Установку Начальной Области значений для примера.

Опции масштабирования фитнеса

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

Scaling function (FitnessScalingFcn) задает функцию, которая выполняет масштабирование. Опции

  • Rank ('fitscalingrank') — Функция масштабирования фитнеса по умолчанию, Rank, масштабирует необработанные очки на основе ранга каждого человека вместо его счета. Ранг человека является своим положением в отсортированных очках. Человек с рангом r масштабировал счет, пропорциональный 1/r. Таким образом, масштабированный счет самого подходящего человека пропорционален 1, масштабированный счет следующего самого подходящего пропорционален 1/2, и так далее. Займите место масштабирование фитнеса удаляет эффект распространения необработанных очков. Квадратный корень заставляет плохо оцениваемых людей более близко равняться в счете, сравненном с выигрышем ранга. Для получения дополнительной информации смотрите, что Фитнес Масштабируется.

  • Proportional ('fitscalingprop') — Пропорциональное масштабирование делает масштабированное значение человека пропорциональным его необработанному счету фитнеса.

  • Top ('fitscalingtop') — Главное масштабирование масштабирует главных людей одинаково. Выбор Top отображает дополнительное поле, Quantity, который задает количество людей, которые присвоены положительные масштабированные значения. Quantity может быть целым числом от 1 до численности населения или части от 0 до 1 определения части численности населения. Значением по умолчанию является 0.4. Каждый из людей, которые производят потомков, присвоен равное масштабированное значение, в то время как остальные присвоены значение 0. Масштабированные значения имеют форму [01/n 1/n 0 0 1/n 0 0 1/n...].

    Чтобы изменить значение по умолчанию для Quantity в командной строке, используйте следующий синтаксис:

    options = optimoptions('ga','FitnessScalingFcn', {@fitscalingtop,quantity})

    где quantity является значением Quantity.

  • Shift linear ('fitscalingshiftlinear') — Переключите линейные шкалы масштабирования необработанные очки так, чтобы ожидание самого подходящего человека было равно константе, умноженной на среднюю оценку. Вы задаете константу в поле Max survival rate, которое отображено, когда вы выбираете Shift linear. Значением по умолчанию является 2.

    Чтобы изменить значение по умолчанию Max survival rate в командной строке, используйте следующий синтаксис

    options = optimoptions('ga','FitnessScalingFcn',...
        {@fitscalingshiftlinear, rate})

    где rate является значением Max survival rate.

  • Custom позволяет вам записать свою собственную функцию масштабирования. Задавать масштабирующуюся функцию с помощью приложения Оптимизации,

    • Установите Scaling function на Custom.

    • Установите Function name на @myfun, где myfun является именем вашей функции.

    Если вы используете ga в командной строке, наборе

    options = optimoptions('ga','FitnessScalingFcn',@myfun);

    Ваша функция масштабирования должна иметь следующий синтаксис вызова:

    function expectation = myfun(scores, nParents)

    Входные параметры к функции:

    • scores — Вектор скаляров, один для каждого члена генеральной совокупности

    • nParents — Количество родительских элементов необходимо от этой генеральной совокупности

    Функция возвращает expectation, вектор-столбец скаляров той же длины как scores, давая масштабированные значения каждого члена генеральной совокупности. Сумма записей expectation должна равняться nParents.

    Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры функции.

Смотрите, что Фитнес Масштабируется для получения дополнительной информации.

Опции выбора

Опции выбора задают, как генетический алгоритм выбирает родительские элементы для следующего поколения. Можно задать функцию использование алгоритма в поле Selection function (SelectionFcn) в панели опций Selection. Не используйте с целочисленными проблемами.

gamultiobj использует только Tournament ('selectiontournament') функция выбора.

Для ga опции:

  • Stochastic uniform ('selectionstochunif') — Функция выбора значения по умолчанию ga, Stochastic uniform, размечает строку, в которой каждый родительский элемент соответствует разделу строки длины, пропорциональной ее масштабированному значению. Алгоритм проходит строка на шагах равного размера. На каждом шаге алгоритм выделяет родительский элемент от раздела, на который это приземляется. Первый шаг является универсальным случайным числом меньше, чем размер шага.

  • Remainder ('selectionremainder') — Родительские элементы присвоений выбора остатка детерминировано от целой части масштабированного значения каждого человека и затем используют выбор рулетки на остающейся дробной части. Например, если масштабированное значение человека 2.3, тот человек перечислен дважды как родительский элемент, потому что целая часть равняется 2. После того, как родительские элементы были присвоены согласно целым частям масштабированных значений, остальная часть родительских элементов выбраны стохастическим образом. Вероятность, что родительский элемент выбран на этом шаге, пропорциональна дробной части своего масштабированного значения.

  • Uniform ('selectionuniform') — Универсальный выбор выбирает родительские элементы с помощью ожиданий и количества родительских элементов. Универсальный выбор полезен для отладки и тестирования, но не является очень эффективной поисковой стратегией.

  • Roulette ('selectionroulette') — Выбор рулетки выбирает родительские элементы путем симуляции колеса рулетки, в котором область раздела колеса, соответствующего человеку, пропорциональна ожиданию человека. Алгоритм использует случайное число, чтобы выбрать один из разделов с вероятностью, равной ее области.

  • Tournament ('selectiontournament') — Выбор турнира выбирает каждый родительский элемент путем выбора проигрывателей Tournament size наугад и затем выбора лучшего человека из того набора, чтобы быть родительским элементом. Tournament size должен быть по крайней мере 2. Значением по умолчанию Tournament size является 4.

    Чтобы изменить значение по умолчанию Tournament size в командной строке, используйте синтаксис

    options = optimoptions('ga','SelectionFcn',...
                         {@selectiontournament,size})

    где size является значением Tournament size.

    Когда Constraint parameters > Nonlinear constraint algorithm является Penalty, ga использует Tournament с размером 2.

  • Custom позволяет вам записать свою собственную функцию выбора. Задавать функцию выбора использование приложения Оптимизации,

    • Установите Selection function на Custom.

    • Установите Function name на @myfun, где myfun является именем вашей функции.

    Если вы используете ga в командной строке, наборе

    options = optimoptions('ga','SelectionFcn',@myfun);

    Ваша функция выбора должна иметь следующий синтаксис вызова:

    function parents = myfun(expectation, nParents, options)

    ga предоставляет входным параметрам expectation, nParents и options. Ваша функция возвращает индексы родительских элементов.

    Входные параметры к функции:

    • expectation

      • Для ga expectation является вектор-столбцом масштабированной физической формы каждого члена генеральной совокупности. Масштабирование прибывает из Опций Масштабирования Фитнеса.

        Совет

        Можно гарантировать, что у вас есть вектор-столбец при помощи expectation(:,1). Например, edit selectionstochunif или любая из других встроенных функций выбора.

      • Для gamultiobj expectation является матрицей, первый столбец которой является рангом людей, и чей второй столбец является мерой по расстоянию людей. См. Многоцелевые Опции.

    • nParents — Количество родительских элементов, чтобы выбрать.

    • опции Генетический алгоритм options.

    Функция возвращает parents, вектор - строку из длины nParents, содержащий индексы родительских элементов, которые вы выбираете.

    Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры функции.

Смотрите Выбор для получения дополнительной информации.

Опции воспроизведения

Опции воспроизведения задают, как генетический алгоритм создает дочерние элементы для следующего поколения.

Elite count (EliteCount) задает количество людей, которые, как гарантируют, выживут к следующему поколению. Установите Elite count быть положительным целым числом, меньше чем или равным численности населения. Значением по умолчанию является ceil(0.05*PopulationSize) для непрерывных проблем и 0.05*(default PopulationSize) для смешано-целочисленных проблем.

Crossover fraction (CrossoverFraction) задает часть следующего поколения кроме элитных дочерних элементов, которые производятся перекрестным соединением. Установите Crossover fraction быть частью между 0 и 1, или путем ввода части в текстовое поле или перемещения ползунка. Значением по умолчанию является 0.8.

Смотрите Установку Перекрестной Части для примера.

Опции мутации

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

  • Gaussian ('mutationgaussian') — Функция мутации по умолчанию для неограниченных проблем, Gaussian, добавляет случайное число, взятое из Распределения Гаусса со средним значением 0 к каждой записи родительского вектора. Стандартное отклонение этого распределения определяется параметрами Scale и Shrink, которые отображены, когда вы выбираете Gaussian, и установкой Initial range в опциях Population.

    • Параметр Scale определяет стандартное отклонение в первом поколении. Если вы устанавливаете Initial range быть 2 1 векторным v, начальное стандартное отклонение является тем же самым во всех координатах родительского вектора и дано Scale *(v(2)-v(1)).

      Если вы устанавливаете Initial range быть векторным v с двумя строками и столбцами Number of variables, начальное стандартное отклонение в координатном i родительского вектора дано Scale *(v(i,2) - v(i,1)).

    • Параметр Shrink управляет, как стандартное отклонение уменьшается, когда поколения проходят. Если вы устанавливаете Initial range быть 2 1 вектор, стандартное отклонение в k th генерация, σ k, является тем же самым во всех координатах родительского вектора и дано рекурсивной формулой

      σk=σk1(1УменьшениеkПоколения).

      Если вы устанавливаете Initial range быть вектором с двумя строками и столбцами Number of variables, стандартное отклонение в координате i родительского вектора в k th генерация, σi,k, дано рекурсивной формулой

      σi,k=σi,k1(1УменьшениеkПоколения).

      Если вы устанавливаете Shrink на 1, алгоритм уменьшает стандартное отклонение в каждой координате линейно, пока это не достигает 0 при последней генерации, достигнут. Отрицательная величина Shrink заставляет стандартное отклонение расти.

    Значение по умолчанию и Scale и Shrink равняется 1. Чтобы изменить значения по умолчанию в командной строке, используйте синтаксис

    options = optimoptions('ga','MutationFcn', ... 
    {@mutationgaussian, scale, shrink})

    где scale и shrink являются значениями Scale и Shrink, соответственно.

    Внимание

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

  • Uniform ('mutationuniform') — Универсальная мутация является двухступенчатым процессом. Во-первых, алгоритм выбирает часть векторных записей человека для мутации, где каждая запись имеет вероятность Rate того, чтобы быть видоизмененным. Значением по умолчанию Rate является 0.01. На втором шаге алгоритм заменяет каждую выбранную запись случайным числом, выбранным однородно из области значений для той записи.

    Чтобы изменить значение по умолчанию Rate в командной строке, используйте синтаксис

    options = optimoptions('ga','MutationFcn', {@mutationuniform, rate})

    где rate является значением Rate.

    Внимание

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

  • Adaptive Feasible ('mutationadaptfeasible'), мутация по умолчанию функционирует, когда существуют ограничения, случайным образом генерирует направления, которые адаптивны относительно последней успешной или неудачной генерации. Мутация выбирает направление и длину шага, которая удовлетворяет границы и линейные ограничения.

  • Пользовательский позволяет вам записать свою собственную функцию мутации. Задавать функцию мутации использование приложения Оптимизации,

    • Установите Mutation function на Custom.

    • Установите Function name на @myfun, где myfun является именем вашей функции.

    Если вы используете ga, набор

    options = optimoptions('ga','MutationFcn',@myfun);

    Ваша функция мутации должна иметь этот синтаксис вызова:

    function mutationChildren = myfun(parents, options, nvars, 
    FitnessFcn, state, thisScore, thisPopulation)

    Аргументы к функции

    • parents — Вектор - строка из родительских элементов выбран функцией выбора

    • опции Опции

    • nvars — Количество переменных

    • FitnessFcn — Функция фитнеса

    • state — Структура, содержащая информацию о текущей генерации. Структура состояния описывает поля state.

    • thisScore — Вектор множества текущей генеральной совокупности

    • thisPopulation — Матрица людей в текущей генеральной совокупности

    Функция возвращает mutationChildren — видоизмененных потомков — как матрица, где строки соответствуют дочерним элементам. Количеством столбцов матрицы является Number of variables.

    Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры функции.

    Внимание

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

Перекрестные опции

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

Crossover function (CrossoverFcn) задает функцию, которая выполняет перекрестное соединение. Не используйте с целочисленными проблемами. Можно выбрать из следующих функций:

  • Scattered ('crossoverscattered'), перекрестная функция по умолчанию для проблем без линейных ограничений, создает случайный бинарный вектор и выбирает гены, где вектор является 1 от первого родительского элемента и генами, где вектор является 0 от второго родительского элемента, и комбинирует гены, чтобы сформировать дочерний элемент. Например, если p1 и p2 являются родительскими элементами

    p1 = [a b c d e f g h]
    p2 = [1 2 3 4 5 6 7 8]

    и бинарный вектор [1 1 0 0 1 0 0 0], функция возвращает следующий дочерний элемент:

    child1 = [a b 3 4 e 6 7 8]

    Внимание

    Не используйте 'crossoverscattered', когда у вас будут линейные ограничения. В противном случае ваша генеральная совокупность не обязательно удовлетворит ограничения.

  • Single point ('crossoversinglepoint') выбирает случайное целое число n между 1 и Number of variables и затем

    • Выбирает векторные записи, пронумерованные меньше чем или равный n от первого родительского элемента.

    • Выбирает векторные записи, пронумерованные больше, чем n от второго родительского элемента.

    • Конкатенации этих записей, чтобы сформировать дочерний вектор.

      Например, если p1 и p2 являются родительскими элементами

      p1 = [a b c d e f g h]
      p2 = [1 2 3 4 5 6 7 8]

    и точка перехода равняется 3, функция возвращает следующий дочерний элемент.

    child = [a b c 4 5 6 7 8]

    Внимание

    Не используйте 'crossoversinglepoint', когда у вас будут линейные ограничения. В противном случае ваша генеральная совокупность не обязательно удовлетворит ограничения.

  • Two point ('crossovertwopoint') выбирает два случайных целых числа m и n между 1 and Number of variables. Функция выбирает

    • Векторные записи, пронумерованные меньше чем или равный m от первого родительского элемента

    • Векторные записи, пронумерованные от m+1 до n, включительно, от второго родительского элемента

    • Векторные записи, пронумерованные больше, чем n от первого родительского элемента.

    Алгоритм затем конкатенирует эти гены, чтобы сформировать один ген. Например, если p1 и p2 являются родительскими элементами

    p1 = [a b c d e f g h]
    p2 = [1 2 3 4 5 6 7 8]

    и точки перехода равняются 3 и 6, функция возвращает следующий дочерний элемент.

    child = [a b c 4 5 6 g h]

    Внимание

    Не используйте 'crossovertwopoint', когда у вас будут линейные ограничения. В противном случае ваша генеральная совокупность не обязательно удовлетворит ограничения.

  • Intermediate ('crossoverintermediate'), перекрестная функция по умолчанию, когда существуют линейные ограничения, создает дочерние элементы путем взятия взвешенного среднего родительских элементов. Можно задать веса одним параметром, Ratio, который может быть скаляром или вектором - строкой из длины Number of variables. Значением по умолчанию является вектор всех 1's. Функция создает дочерний элемент из parent1 и parent2 с помощью следующей формулы.

    child = parent1 + rand * Ratio * ( parent2 - parent1)

    Если все записи Ratio находятся в диапазоне [0, 1], произведенные дочерние элементы в гиперкубе, заданном путем размещения родительских элементов в противоположных вершинах. Если Ratio не находится в той области значений, дочерняя сила лежат вне гиперкуба. Если Ratio является скаляром, то вся дочерняя ложь на строке между родительскими элементами.

    Чтобы изменить значение по умолчанию Ratio в командной строке, используйте синтаксис

    options = optimoptions('ga','CrossoverFcn', ...  
    {@crossoverintermediate, ratio});

    где ratio является значением Ratio.

  • Heuristic ('crossoverheuristic') возвращает дочерний элемент, который лежит на строке, содержащей два родительских элемента, маленькое расстояние далеко от родительского элемента с лучшим значением фитнеса в направлении далеко от родительского элемента с худшим значением фитнеса. Можно задать, как далеко дочерним элементом является от лучшего родительского элемента параметром Ratio, который появляется, когда вы выбираете Heuristic. Значение по умолчанию Ratio 1.2. Если parent1 и parent2 являются родительскими элементами, и parent1 имеет лучшее значение фитнеса, функция возвращает дочерний элемент

    child = parent2 + R * (parent1 - parent2);

    Чтобы изменить значение по умолчанию Ratio в командной строке, используйте синтаксис

    options = optimoptions('ga','CrossoverFcn',...
                       {@crossoverheuristic,ratio});

    где ratio является значением Ratio.

  • Arithmetic ('crossoverarithmetic') создает дочерние элементы, которые являются взвешенным средним арифметическим двух родительских элементов. Дочерние элементы всегда выполнимы относительно линейных ограничений и границ.

  • Custom позволяет вам записать свою собственную перекрестную функцию. Задавать перекрестную функцию с помощью приложения Оптимизации,

    • Установите Crossover function на Custom.

    • Установите Function name на @myfun, где myfun является именем вашей функции.

    Если вы используете ga, набор

    options = optimoptions('ga','CrossoverFcn',@myfun);

    Ваша перекрестная функция должна иметь следующий синтаксис вызова.

    xoverKids = myfun(parents, options, nvars, FitnessFcn, ...
        unused,thisPopulation)

    Аргументы к функции

    • parents — Вектор - строка из родительских элементов выбран функцией выбора

    • опции опции

    • nvars — Количество переменных

    • FitnessFcn — Функция фитнеса

    • unused — Заполнитель, не используемый

    • thisPopulation — Матрица, представляющая текущую генеральную совокупность. Количеством строк матрицы является Population size, и количеством столбцов является Number of variables.

    Функция возвращает xoverKids — перекрестных потомков — как матрица, где строки соответствуют дочерним элементам. Количеством столбцов матрицы является Number of variables.

    Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры функции.

    Внимание

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

Опции миграции

Примечание

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

Поскольку ga в настоящее время не поддерживает эту форму параллельной обработки, нет никакого преимущества к установке PopulationSize к вектору, или к установке MigrationDirection, MigrationInterval или опций MigrationFraction.

Опции миграции задают, как люди перемещаются между поднаселением. Миграция происходит, если вы устанавливаете Population size быть вектором длины, больше, чем 1. Когда миграция происходит, лучшие люди от одной подгенеральной совокупности заменяют худших людей в другой подгенеральной совокупности. Копируются люди, которые мигрируют от одной подгенеральной совокупности на другого. Они не удалены из исходной подгенеральной совокупности.

Можно управлять, как миграция происходит следующими тремя полями в панели опций Migration:

  • Direction (MigrationDirection) — Миграция может произойти в одной или обоих направлениях.

    • Если вы устанавливаете Direction на Forward ('forward'), миграция происходит к последней подгенеральной совокупности. Таким образом, n th подгенеральная совокупность мигрирует в (n +1) th подгенеральная совокупность.

    • Если вы устанавливаете Direction на Both ('both'), n th подгенеральная совокупность мигрирует в обоих (n –1) th и (n +1) th подгенеральная совокупность.

    Миграция переносится в концах поднаселения. Таким образом, последняя подгенеральная совокупность мигрирует в первое, и первое может мигрировать в последнее.

  • Interval (MigrationInterval) — Задает сколько передачи генерации между миграциями. Например, если вы устанавливаете Interval на 20, миграция происходит каждые 20 поколений.

  • Fraction (MigrationFraction) — Задает, сколько людей перемещается между поднаселением. Fraction задает часть меньшего из двух поднаселения, которое перемещается. Например, если люди мигрируют от подгенеральной совокупности 50 человек в подгенеральную совокупность 100 человек, и вы устанавливаете Fraction на 0.1, количество людей, которые мигрируют, 0.1*50=5.

Параметры ограничения

Параметры ограничения относятся к нелинейному ограничительному решателю. Для получения дополнительной информации на алгоритме, смотрите Нелинейные Ограничительные Алгоритмы решателя.

Выберите между нелинейными ограничительными алгоритмами путем установки опции NonlinearConstraintAlgorithm на 'auglag' (Увеличенная функция Лагранжа) или 'penalty' (Алгоритм штрафа).

Увеличенный лагранжевый генетический алгоритм

  • Initial penalty (InitialPenalty) — Задает начальное значение параметра штрафа, который используется нелинейным ограничительным алгоритмом. Initial penalty должен быть больше, чем или равным 1 и имеет значение по умолчанию 10.

  • Penalty factor (PenaltyFactor) — Увеличивает параметр штрафа, когда проблема не решена к требуемой точности, и ограничения не удовлетворены. Penalty factor должен быть больше, чем 1 и имеет значение по умолчанию 100.

Алгоритм штрафа

Алгоритм штрафа использует функцию создания gacreationnonlinearfeasible по умолчанию. Эта функция создания использует fmincon, чтобы найти выполнимых людей. gacreationnonlinearfeasible запускает fmincon со множества начальных точек в границах из опции InitialPopulationRange. Опционально, gacreationnonlinearfeasible может запустить fmincon параллельно на начальных точках.

Можно задать настраивающиеся параметры для gacreationnonlinearfeasible с помощью следующих пар "имя-значение".

ИмяЗначение
SolverOptsОпции fmincon, созданное использование optimoptions или optimset.
UseParallelКогда true, выполнение fmincon параллельно на начальных точках; значением по умолчанию является false.
NumStartPtsКоличество стартовых точек, положительного целого числа до sum(PopulationSize) в значении.

Включайте пары "имя-значение" в массив ячеек наряду с @gacreationnonlinearfeasible.

options = optimoptions('ga','CreationFcn',{@gacreationnonlinearfeasible,...
    'UseParallel',true,'NumStartPts',20});

Многоцелевые опции

Многоцелевые опции задают характеристику параметров многоцелевого генетического алгоритма. Можно задать следующие параметры:

  • ParetoFraction — Устанавливает часть людей сохранять первую переднюю сторону Парето, в то время как решатель выбирает людей из более высоких передних сторон. Эта опция является скаляром между 0 и 1.

    Примечание

    Часть людей на первой передней стороне Парето может превысить ParetoFraction. Это происходит, когда существует слишком мало людей других рангов на шаге 6 Итераций.

  • DistanceMeasureFcn — Задает указатель на функцию, которая вычисляет меру по расстоянию людей, вычисленных на пробеле переменной решения (генотип, который также называют пробелом переменной проекта) или в функциональном пространстве (фенотип). Например, функцией меры по расстоянию по умолчанию является 'distancecrowding' в функциональном пространстве, которое совпадает с {@distancecrowding,'phenotype'}.

    “Расстояние” измеряет давку каждого человека в генеральной совокупности. Выберите между следующим:

    • 'distancecrowding' или эквивалентный {@distancecrowding,'phenotype'} — Мера расстояние в функциональном пространстве фитнеса.

    • {@distancecrowding,'genotype'} — Измерьте расстояние на пробеле переменной решения.

    • @distancefunction — Запишите пользовательской функции расстояния использование следующего шаблона.

      function distance = distancefunction(pop,score,options)
      % Uncomment one of the following two lines, or use a combination of both
      % y = score; % phenotype
      % y = pop; % genotype
      popSize = size(y,1); % number of individuals
      numData = size(y,2); % number of dimensions or fitness functions
      distance = zeros(popSize,1); % allocate the output
      % Compute distance here

      gamultiobj передает генеральную совокупность в pop, вычисленной музыке к генеральной совокупности в scores и опциям в options. Ваша функция расстояния возвращает расстояние от каждого члена генеральной совокупности к ссылке, такой как самый близкий сосед в некотором смысле. Для примера отредактируйте встроенный файл distancecrowding.m.

Гибридные функциональные опции

Гибридная функция ga

Гибридная функция является другой функцией минимизации, которая выполняется после генетического алгоритма, останавливается. Можно задать гибридную функцию в Hybrid function (HybridFcn) опции. Не используйте с целочисленными проблемами. Выбор

  • [] — Никакая гибридная функция.

  • fminsearch ('fminsearch') — Использует функцию MATLAB® fminsearch, чтобы выполнить безусловную минимизацию.

  • patternsearch ('patternsearch') — Использует поиск шаблона, чтобы выполнить ограниченную или безусловную минимизацию.

  • fminunc ('fminunc') — Использует функцию Optimization Toolbox™ fminunc, чтобы выполнить безусловную минимизацию.

  • fmincon ('fmincon') — Использует функцию Optimization Toolbox fmincon, чтобы выполнить ограниченную минимизацию.

Примечание

Гарантируйте, что ваша гибридная функция принимает ваши ограничения задач. В противном случае ga выдает ошибку.

Можно установить отдельные опции для гибридной функции. Используйте optimset для fminsearch или optimoptions для fmincon, patternsearch или fminunc. Например:

hybridopts = optimoptions('fminunc','Display','iter','Algorithm','quasi-newton');
Включайте гибридные опции в Генетический алгоритм options можно следующим образом:
options = optimoptions('ga',options,'HybridFcn',{@fminunc,hybridopts}); 
hybridopts должен существовать, прежде чем вы установите options.

См. Гибридную Схему в Генетическом алгоритме для примера. Смотрите, Когда Использовать Гибридную Функцию.

Гибридная функция gamultiobj

Гибридная функция является другой функцией минимизации, которая выполняется после многоцелевого генетического алгоритма, останавливается. Можно задать гибридный функциональный fgoalattain в Hybrid function (HybridFcn) опции.

В использовании в качестве многоцелевой гибридной функции решатель делает следующее:

  1. Вычислите максимум и минимум каждой целевой функции при решениях. Для объективного j в решении k позволить

    Fmax (j)=max kFk(j)Fmin(j)=minkFk(j).

  2. Вычислите общую массу в каждом решении k,

    w(k)=jFmax (j)Fk(j)1+Fmax (j)Fmin(j).

  3. Вычислите вес для каждой целевой функции j в каждом решении k,

    p(j,k)=w(k)Fmax (j)Fk(j)1+Fmax (j)Fmin(j).

  4. Для каждого решения k выполните целевую проблему достижения с целевым векторным Fk (j) и вектор веса p (j, k).

Для получения дополнительной информации смотрите раздел 9.6 из Деб [3].

Опции критерия остановки

Критерий остановки определяет то, что заставляет алгоритм останавливаться. Можно задать следующие опции:

  • Generations (MaxGenerations) — Задает максимальное количество итераций для генетического алгоритма, чтобы выполнить. Значением по умолчанию является 100*numberOfVariables.

  • Time limit (MaxTime) — Задает максимальное время в секундах выполнения генетического алгоритма перед остановкой, как измерено tic и toc. Этот предел осуществляется после каждой итерации, таким образом, ga может превысить предел, когда итерация занимает время.

  • Fitness limit (FitnessLimit) — Алгоритм останавливается, если лучшее значение фитнеса меньше чем или равно значению Fitness limit. Не применяется к gamultiobj.

  • Stall generations (MaxStallGenerations) — Алгоритм останавливается, если среднее относительное изменение в лучшем значении функции фитнеса по Stall generations меньше чем или равно Function tolerance. (Если Stall Test (StallTest), опцией является 'geometricWeighted', то тест для геометрического средневзвешенного относительного изменения.) Для проблемы с нелинейными ограничениями Stall generations применяется к подпроблеме (см. Нелинейные Ограничительные Алгоритмы решателя).

    Для gamultiobj, если среднее геометрическое относительного изменения в spread решений Парето по Stall generations является меньше, чем Function tolerance, и итоговое распространение меньше, чем средний спред по последнему Stall generations, то алгоритм останавливается. Коэффициент среднего геометрического ½. Распространение является мерой перемещения передней стороны Парето. См. gamultiobj Алгоритм.

  • Stall time limit (MaxStallTime) — Алгоритм останавливается, если нет никакого улучшения лучшего значения фитнеса в течение интервала времени в секундах, заданных Stall time limit, как измерено tic и toc.

  • Function tolerance (FunctionTolerance) — Алгоритм останавливается, если среднее относительное изменение в лучшем значении функции фитнеса по Stall generations меньше чем или равно Function tolerance. (Если опцией StallTest является 'geometricWeighted', то тест для геометрического средневзвешенного относительного изменения.)

    Для gamultiobj, если среднее геометрическое относительного изменения в spread решений Парето по Stall generations является меньше, чем Function tolerance, и итоговое распространение меньше, чем средний спред по последнему Stall generations, то алгоритм останавливается. Коэффициент среднего геометрического ½. Распространение является мерой перемещения передней стороны Парето. См. gamultiobj Алгоритм.

  • Constraint tolerance (ConstraintTolerance) — Constraint tolerance не используется в качестве останавливающегося критерия. Это используется, чтобы определить выполнимость относительно нелинейных ограничений. Кроме того, max(sqrt(eps),ConstraintTolerance) определяет выполнимость относительно линейных ограничений.

Смотрите Определенный Максимальный номер Поколений для примера.

Опции выходной функции

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

Задавать выходную функцию с помощью приложения Оптимизации,

  • Выберите Custom function.

  • Введите @myfun в текстовое поле, где myfun является именем вашей функции. Запишите myfun с соответствующим синтаксисом.

  • Чтобы передать дополнительные параметры в выходной функции, используйте Анонимные функции (Optimization Toolbox).

  • Для нескольких выходных функций введите массив ячеек указателей выходной функции: {@myfun1,@myfun2,...}.

В командной строке, наборе

options = optimoptions('ga','OutputFcn',@myfun);

Для нескольких выходных функций введите cell-массив указателей на функцию:

options = optimoptions('ga','OutputFcn',{@myfun1,@myfun2,...});

Чтобы видеть шаблон, который можно использовать, чтобы записать собственные выходные функции, войти

edit gaoutputfcntemplate

в командной строке MATLAB.

Для примера смотрите Пользовательскую Выходную функцию для Генетического алгоритма.

Структура выходной функции

Ваша выходная функция должна иметь следующий синтаксис вызова:

[state,options,optchanged] = myfun(options,state,flag)

MATLAB передает options, state и данные flag к вашей выходной функции, и выходная функция возвращает state, options и данные optchanged.

Примечание

Чтобы остановить итерации, установите state.StopFlag на непустой вектор символов, такой как 'y'.

Выходная функция имеет следующие входные параметры:

  • опции Опции

  • state — Структура, содержащая информацию о текущей генерации. Структура состояния описывает поля state.

  • флаг Текущий статус алгоритма:

    • 'init' — Состояние инициализации

    • 'iter' — Состояние итерации

    • 'interrupt' — Итерация подпроблемы нелинейно ограниченной проблемы для 'auglag' нелинейный ограничительный алгоритм. Когда flag является 'interrupt':

      • Значения полей state применяются к подпроблемным итерациям.

      • ga не принимает изменения в options и игнорирует optchanged.

      • Поля state.NonlinIneq и state.NonlinEq не доступны.

    • сделанный Конечное состояние

Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как предоставить дополнительные параметры функции.

Выходная функция возвращает следующие аргументы в ga:

  • state — Структура, содержащая информацию о текущей генерации. Структура состояния описывает поля state. Чтобы остановить итерации, установите state.StopFlag на непустой вектор символов, такой как 'y'.

  • опции Опции, как изменено выходной функцией. Этот аргумент является дополнительным.

  • optchanged — Указание булева флага изменяется на options. Чтобы изменить options для последующих итераций, установите optchanged на true.

Изменение структуры состояния

Внимание

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

Выходные функции ga могут изменить структуру state (см. Структуру состояния). Будьте осторожны при изменении значений в этой структуре, когда можно пасовать назад противоречивые данные к ga.

Совет

Если ваша выходная структура изменяет поле Population, то, несомненно, обновит поле Score, и возможно Best, NonlinIneq или поля NonlinEq, так, чтобы они содержали сопоставимую информацию.

Чтобы обновить поле Score после изменения поля Population, сначала вычислите значения функции фитнеса генеральной совокупности, затем вычислите фитнес, масштабирующийся для генеральной совокупности. Смотрите, что Фитнес Масштабирует Опции.

Отобразитесь к опциям командного окна

Level of display ('Display') задает, сколько информации отображено в командной строке, в то время как генетический алгоритм запускается. Доступные параметры

  • Off ('off') — No вывод отображен.

  • Iterative ('iter') — Информация отображена в каждой итерации.

  • Diagnose ('diagnose') — Информация отображена в каждой итерации. Кроме того, диагностика перечисляет некоторую информацию о проблеме и опции, которые были изменены от значений по умолчанию.

  • Final ('final') — Причина остановки отображена.

И Iterative и Diagnose отображают следующую информацию:

  • Generation — Номер генерации

  • f-count — Совокупное число оценок функции фитнеса

  • Best f(x) — Лучшее значение функции фитнеса

  • Mean f(x) — Среднее значение функции фитнеса

  • Stall generations — Количество поколений начиная с последнего улучшения функции фитнеса

Когда нелинейная ограничительная функция была задана, Iterative и Diagnose не отображают Mean f(x), но дополнительно отобразятся:

  • Max Constraint — Максимальное нелинейное ограничительное нарушение

Значение по умолчанию Level of display

  • Off в приложении Оптимизации

  • 'final' в опциях, созданных с помощью optimoptions

Векторизуйте и найдите что-либо подобное опциям (оценка функции пользователя)

Можно принять решение иметь физическую форму и ограничительные функции, выполненные в последовательном, параллельном, или векторизованным способом. Эти опции доступны в разделе User function evaluation панели Options приложения Оптимизации, или путем установки 'UseVectorized' и опций 'UseParallel' с optimoptions.

  • Когда Evaluate fitness and constraint functions ('UseVectorized') является in serial (false), ga вызывает функцию фитнеса на одном человеке за один раз, когда это циклично выполняется через генеральную совокупность. (В командной строке это принимает, что 'UseParallel' в его значении по умолчанию false.)

  • Когда Evaluate fitness and constraint functions ('UseVectorized') является vectorized (true), ga вызывает функцию фитнеса на целой генеральной совокупности целиком, т.е. в одном вызове функции фитнеса.

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

    Смотрите Векторизуют Функцию Фитнеса для примера.

  • Когда Evaluate fitness and constraint functions (UseParallel) является in parallel (true), ga вызывает функцию фитнеса параллельно, с помощью параллельной среды, которую вы установили (см., Как Использовать Параллельную обработку в Global Optimization Toolbox). В командной строке, набор UseParallel к false, чтобы вычислить последовательно.

Примечание

Вы не можете одновременно использовать векторизованный и найти что-либо подобное вычислениям. Если вы устанавливаете 'UseParallel' на true и 'UseVectorized' к true, ga оценивает вашу физическую форму и ограничительные функции векторизованным способом, не параллельно.

Как фитнес и ограничительные функции оценены

 UseVectorized = falseUseVectorized = true
UseParallel = falseПоследовательныйВекторизованный
UseParallel = trueПараллельВекторизованный