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

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

Существует два способа задать опции для генетического алгоритма, в зависимости от того, используете ли вы приложение Оптимизации или вызываете функции 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)

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

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

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

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

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

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

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

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

  • Generation — Номер текущего поколения.

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

  • StopFlag — Причина остановки, вектора символов.

  • 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'.

  • EvalElites — Логическое значение, указывающее, ли ga выполняет функцию фитнеса элитных индивидуумов. Первоначально, этим значением является true. В первом поколении, если элитные индивидуумы оценивают к их предыдущим значениям (который указывает, что функция фитнеса детерминирована), затем это значение становится false по умолчанию для последующих итераций. Когда EvalElites false, ga не переоценивает функцию фитнеса элитных индивидуумов. Можно заменить это поведение в пользовательской функции построения графика или пользовательской выходной функции путем изменения выхода state.EvalElites.

  • HaveDuplicates — Логическое значение, указывающее, ли ga добавляют дублирующиеся индивидуумы для начальной генеральной совокупности. ga использует маленький относительный допуск, чтобы определить, дублирован ли индивидуум или уникален. Если HaveDuplicates true, затем ga определяет местоположение уникальных индивидуумов и выполняет функцию фитнеса только однажды для каждого уникального индивидуума. ga копирует фитнес и ограничительные значения функции, чтобы скопировать индивидуумов. ga повторяет тест в каждой генерации, пока все индивидуумы не уникальны. Тест берет, заказывают n*m*log(m) операции, где m численность населения и n nvars. Чтобы заменить этот тест в пользовательской функции построения графика или пользовательской выходной функции, установите выход state.HaveDuplicates к false.

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

  • Population — Население в текущем поколении

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

  • Generation — Номер текущего поколения

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

  • StopFlag — Причина остановки, вектора символов

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

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

  • Rank — Вектор рангов членов в населении

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

  • AverageDistance — Стандартное отклонение (не средний) Distance

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

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

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

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

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

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

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

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

Опции населения

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

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 — Функция фитнеса

    • options Опции

    Функция возвращает 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 — Генетический алгоритм 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 — Вектор-строка из родительских элементов выбран функцией выбора

    • options Опции

    • 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 — Вектор-строка из родительских элементов выбран функцией выбора

    • options Опции

    • 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 использование следующих пар "имя-значение".

ИмяЗначение
SolverOptsfmincon опции, созданное использование 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)=maxkFk(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Опции, и optchanged данные.

Примечание

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

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

  • options Опции

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

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

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

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

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

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

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

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

    • 'done' — Конечное состояние

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

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

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

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

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

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

Внимание

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

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

Совет

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

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

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

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

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

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

  • 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ПараллельВекторизованный