Найдите минимум функции с помощью генетического алгоритма
находит локальный неограниченный минимум, x
= ga(fun
,nvars
)x
, к целевой функции, fun
. nvars
размерность (количество переменных проекта) fun
.
Передача Дополнительных Параметров (Optimization Toolbox) объясняет, как передать дополнительные параметры целевой функции и нелинейным ограничительным функциям при необходимости.
подвергает минимизацию ограничениям, заданным в x
= ga(fun
,nvars
,A
,b
,Aeq
,beq
,lb
,ub
,nonlcon
)nonlcon
. Функциональный nonlcon
принимает x
и возвращает векторы C
и Ceq
, представление нелинейных неравенств и равенств соответственно. ga
минимизирует fun
таким образом, что C(x)
≤ 0
и Ceq(x) = 0
. (Установите lb=[]
и ub=[]
если никакие границы не существуют.)
или x
= ga(fun
,nvars
,A
,b
,[],[],lb
,ub
,nonlcon
,IntCon
)
требует, чтобы переменные перечислили в x
= ga(fun
,nvars
,A
,b
,[],[],lb
,ub
,nonlcon
,IntCon
,options
)IntCon
примите целочисленные значения.
Когда существуют целочисленные ограничения, ga
не принимает линейные или нелинейные ограничения равенства, только ограничения неравенства.
ga
ps_example.m
файл поставляется с вашим программным обеспечением. Постройте функцию.
xi = linspace(-6,2,300); yi = linspace(-4,4,300); [X,Y] = meshgrid(xi,yi); Z = ps_example([X(:),Y(:)]); Z = reshape(Z,size(X)); surf(X,Y,Z,'MeshStyle','none') colormap 'jet' view(-26,43) xlabel('x(1)') ylabel('x(2)') title('ps\_example(x)')
Найдите минимум этой функции с помощью ga
.
rng default % For reproducibility x = ga(@ps_example,2)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2
-4.6793 -0.0860
Используйте генетический алгоритм, чтобы минимизировать ps_example
функция на области x(1) + x(2) >= 1
и x(2) <= 5 + x(1)
.
Во-первых, преобразуйте эти два ограничения неравенства в матричную форму A*x <= b
. Другими словами, получите x
переменные на левой стороне неравенства, и делают оба неравенства меньше чем или равными:
-x(1) -x(2) <= -1
-x(1) + x(2) <= 5
A = [-1,-1; -1,1]; b = [-1;5];
Решите ограниченную задачу с помощью ga
.
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2
0.9990 -0.0000
К ограничениям удовлетворяют в значении по умолчанию допуска ограничения, 1e-3
. Чтобы видеть это, вычислите A*x' - b
, который должен иметь отрицательные компоненты.
disp(A*x' - b)
0.0010 -5.9990
Используйте генетический алгоритм, чтобы минимизировать ps_example
функция на области x(1) + x(2) >= 1
и x(2) == 5 + x(1)
.
Во-первых, преобразуйте эти два ограничения в матричную форму A*x <= b
и Aeq*x = beq
. Другими словами, получите x
переменные на левой стороне выражений, и превращают неравенство в меньше чем или равную форму:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
Решите ограниченную задачу с помощью ga
.
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2
-2.0000 2.9990
Проверяйте, что к ограничениям удовлетворяют в значении по умолчанию ConstraintTolerance
, 1e-3
.
disp(A*x' - b)
1.0000e-03
disp(Aeq*x' - beq)
-9.9977e-04
Используйте генетический алгоритм, чтобы минимизировать ps_example
функция на области x(1) + x(2) >= 1
и x(2) == 5 + x(1)
. Кроме того, установите, ограничивает 1 <= x(1) <= 6
и -3 <= x(2) <= 8
.
Во-первых, преобразуйте два линейных ограничения в матричную форму A*x <= b
и Aeq*x = beq
. Другими словами, получите x
переменные на левой стороне выражений, и превращают неравенство в меньше чем или равную форму:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
Установите ограничивает lb
и ub
.
lb = [1 -3]; ub = [6 8];
Решите ограниченную задачу с помощью ga
.
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq,lb,ub)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2
1.0001 5.9992
Проверяйте, что к линейным ограничениям удовлетворяют в значении по умолчанию ConstraintTolerance
, 1e-3
.
disp(A*x' - b)
-5.9994
disp(Aeq*x' - beq)
-9.2972e-04
ga
Используйте генетический алгоритм, чтобы минимизировать ps_example
функция на области и .
Для этого первая запись функциональный ellipsecons.m
это возвращает ограничение неравенства в первом выходе, c
, и ограничение равенства во втором выходе, ceq
. Сохраните файл ellipsecons.m
к папке на вашем пути MATLAB®.
type ellipsecons
function [c,ceq] = ellipsecons(x) c = 2*x(1)^2 + x(2)^2 - 3; ceq = (x(1)+1)^2 - (x(2)/2)^4;
Включайте указатель на функцию в ellipsecons
как nonlcon
аргумент.
nonlcon = @ellipsecons; fun = @ps_example; rng default % For reproducibility x = ga(fun,2,[],[],[],[],[],[],nonlcon)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance and constraint violation is less than options.ConstraintTolerance.
x = 1×2
-0.9766 0.0362
Проверяйте, что нелинейным ограничениям удовлетворяют в x
. Ограничениям удовлетворяют когда c
≤ 0 и ceq
= 0 к в значении по умолчанию ConstraintTolerance
, 1e-3
.
[c,ceq] = nonlcon(x)
c = -1.0911
ceq = 5.4645e-04
Используйте генетический алгоритм, чтобы минимизировать ps_example
функция на области x(1) + x(2) >= 1
и x(2) == 5 + x(1)
использование допуска ограничения, который меньше, чем значение по умолчанию.
Во-первых, преобразуйте эти два ограничения в матричную форму A*x <= b
и Aeq*x = beq
. Другими словами, получите x
переменные на левой стороне выражений, и превращают неравенство в меньше чем или равную форму:
-x(1) -x(2) <= -1
-x(1) + x(2) == 5
A = [-1 -1]; b = -1; Aeq = [-1 1]; beq = 5;
Чтобы получить более точное решение, установите допуск ограничения 1e-6
. И контролировать прогресс решателя, установите функцию построения графика.
options = optimoptions('ga','ConstraintTolerance',1e-6,'PlotFcn', @gaplotbestf);
Решите задачу минимизации.
rng default % For reproducibility fun = @ps_example; x = ga(fun,2,A,b,Aeq,beq,[],[],[],options)
Optimization terminated: average change in the fitness value less than options.FunctionTolerance.
x = 1×2
-2.0000 3.0000
Проверяйте, что к линейным ограничениям удовлетворяют в 1e-6
.
disp(A*x' - b)
9.9957e-07
disp(Aeq*x' - beq)
-9.8576e-07
Используйте генетический алгоритм, чтобы минимизировать ps_example
функционируйте предмет к ограничению что x(1)
целое число.
IntCon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; x = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,IntCon)
Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance and constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0000
Используйте для генетического алгоритма, чтобы минимизировать ограниченную целым числом нелинейную проблему. Получите и местоположение минимума и минимальное значение функции.
IntCon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; [x,fval] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,IntCon)
Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance and constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0000
fval = -1.9178
Сравните этот результат с решением проблемы без ограничений.
[x,fval] = ga(fun,2)
Optimization terminated: maximum number of generations exceeded.
x = 1×2
-4.7121 0.0051
fval = -1.9949
Используйте генетический алгоритм, чтобы минимизировать ps_example
функция, ограниченная иметь x(1)
с целочисленным знаком. Изучать причину остановленный решатель и как ga
разыскиваемый минимум, получите exitflag
и output
результаты. Кроме того, постройте минимальное наблюдаемое значение целевой функции, в то время как решатель прогрессирует.
IntCon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; options = optimoptions('ga','PlotFcn', @gaplotbestf); [x,fval,exitflag,output] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,IntCon,options)
Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance and constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0000
fval = -1.9178
exitflag = 1
output = struct with fields:
problemtype: 'integerconstraints'
rngstate: [1x1 struct]
generations: 96
funccount: 3691
message: 'Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance...'
maxconstraint: 0
Используйте генетический алгоритм, чтобы минимизировать ps_example
функция, ограниченная иметь x(1)
с целочисленным знаком. Получите все выходные параметры, включая итоговое население и вектор баллов.
IntCon = 1; rng default % For reproducibility fun = @ps_example; A = []; b = []; Aeq = []; beq = []; lb = []; ub = []; nonlcon = []; [x,fval,exitflag,output,population,scores] = ga(fun,2,A,b,Aeq,beq,lb,ub,nonlcon,IntCon);
Optimization terminated: average change in the penalty fitness value less than options.FunctionTolerance and constraint violation is less than options.ConstraintTolerance.
Исследуйте первые 10 членов итогового населения и их соответствующих баллов. Заметьте тот x(1)
с целочисленным знаком для всех этих членов населения. Целочисленный ga
алгоритм генерирует только целочисленно-выполнимые популяции.
disp(population(1:10,:))
-5.0000 -0.0000 -5.0000 -0.0000 -5.0000 0.0014 -6.0000 0.0008 -13.0000 -0.0124 -10.0000 0.0011 -4.0000 -0.0010 0 0.0072 -4.0000 0.0010 -5.0000 -0.0000
disp(scores(1:10))
-1.9178 -1.9178 -1.9165 1.0008 64.0124 25.0011 -1.5126 2.5072 -1.5126 -1.9178
fun
— Целевая функцияЦелевая функция, определенный функцией указатель или имя функции. Запишите целевую функцию, чтобы принять вектор-строку из длины nvars
и возвратите скалярное значение.
Когда 'UseVectorized'
опцией является true
, запишите fun
принять pop
- nvars
матрица, где pop
текущая численность населения. В этом случае, fun
возвращает вектор та же длина как pop
содержа значения функции фитнеса. Убедитесь, что fun
не принимает никакого конкретного размера для pop
, начиная с ga
может передать одного члена населения даже в векторизованном вычислении.
Пример: fun = @(x)(x-[4,2]).^2
Типы данных: char |
function_handle
| string
nvars
— Количество переменныхКоличество переменных, заданных как положительное целое число. Решатель передает векторы-строки из длины nvars
к fun
.
Пример 4
Типы данных: double
A
— Линейные ограничения неравенстваЛинейные ограничения неравенства, заданные как действительная матрица. A
M
- nvars
матрица, где M
количество неравенств.
A
кодирует M
линейные неравенства
A*x <= b
,
где x
вектор-столбец nvars
переменные x(:)
, и b
вектор-столбец с M
элементы.
Например, чтобы задать
x 1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
дайте эти ограничения:
A = [1,2;3,4;5,6]; b = [10;20;30];
Пример: Чтобы указать что сумма контрольных переменных к 1 или меньше, дайте ограничениям A = ones(1,N)
и b = 1
.
Типы данных: double
b
— Линейные ограничения неравенстваЛинейные ограничения неравенства, заданные как вектор действительных чисел. b
M
- вектор элемента связан с A
матрица. Если вы передаете b
как вектор-строка, решатели внутренне преобразуют b
к вектор-столбцу b(:)
.
b
кодирует M
линейные неравенства
A*x <= b
,
где x
вектор-столбец N
переменные x(:)
, и A
матрица размера M
- N
.
Например, чтобы задать
x 1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
дайте эти ограничения:
A = [1,2;3,4;5,6]; b = [10;20;30];
Пример: Чтобы указать что сумма контрольных переменных к 1 или меньше, дайте ограничениям A = ones(1,N)
и b = 1
.
Типы данных: double
Aeq
— Линейные ограничения равенстваЛинейные ограничения равенства, заданные как действительная матрица. Aeq
Me
- nvars
матрица, где Me
количество равенств.
Aeq
кодирует Me
линейные равенства
Aeq*x = beq
,
где x
вектор-столбец N
переменные x(:)
, и beq
вектор-столбец с Me
элементы.
Например, чтобы задать
x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 20,
дайте эти ограничения:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы указать что сумма контрольных переменных к 1, дайте ограничениям Aeq = ones(1,N)
и beq = 1
.
Типы данных: double
beq
— Линейные ограничения равенстваЛинейные ограничения равенства, заданные как вектор действительных чисел. beq
Me
- вектор элемента связан с Aeq
матрица. Если вы передаете beq
как вектор-строка, решатели внутренне преобразуют beq
к вектор-столбцу beq(:)
.
beq
кодирует Me
линейные равенства
Aeq*x = beq
,
где x
вектор-столбец N
переменные x(:)
, и Aeq
матрица размера Meq
- N
.
Например, чтобы задать
x 1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x 3 = 20,
дайте эти ограничения:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы указать что сумма контрольных переменных к 1, дайте ограничениям Aeq = ones(1,N)
и beq = 1
.
Типы данных: double
lb
— Нижние границы[]
(значение по умолчанию) | вектор действительных чисел или массивНижние границы, заданные как вектор действительных чисел или массив, удваиваются. lb
представляет нижние границы, поэлементные в lb
≤ x
≤ ub
.
Внутренне, ga
преобразует массив lb
к векторному lb(:)
.
Пример: lb = [0;-Inf;4]
средние значения x(1) ≥ 0
, x(3) ≥ 4
.
Типы данных: double
ub
— Верхние границы[]
(значение по умолчанию) | вектор действительных чисел или массивВерхние границы, заданные как вектор действительных чисел или массив, удваиваются. ub
представляет верхние границы, поэлементные в lb
≤ x
≤ ub
.
Внутренне, ga
преобразует массив ub
к векторному ub(:)
.
Пример: ub = [Inf;4;10]
средние значения x(2) ≤ 4
, x(3) ≤ 10
.
Типы данных: double
nonlcon
— Нелинейные ограниченияНелинейные ограничения, определенный функцией указатель или имя функции. nonlcon
функция, которая принимает вектор или массив x
и возвращает два массива, c(x)
и ceq(x)
.
c(x)
массив нелинейных ограничений неравенства в x
. ga
попытки удовлетворить
c(x) <= 0
для всех записей c
.
ceq(x)
массив нелинейных ограничений равенства в x
. ga
попытки удовлетворить
ceq(x) = 0
для всех записей ceq
.
Например,
x = ga(@myfun,4,A,b,Aeq,beq,lb,ub,@mycon)
где mycon
функция MATLAB® такой как
function [c,ceq] = mycon(x) c = ... % Compute nonlinear inequalities at x. ceq = ... % Compute nonlinear equalities at x.
Чтобы изучить, как использовать векторизованные ограничения, смотрите Векторизованные Ограничения.
ga
не осуществляет нелинейные ограничения, которым удовлетворят когда PopulationType
опция установлена в 'bitString'
или 'custom'
.
Если IntCon
не пусто, второй выход nonlcon
(ceq
) должна быть пустая запись ([]
).
Для получения информации о как ga
использование nonlcon
, смотрите Нелинейные Ограничительные Алгоритмы решателя.
Типы данных: char |
function_handle
| string
options
— Опции оптимизацииoptimoptions
| структураОпции оптимизации, заданные как выход optimoptions
или структура.
Создайте options
при помощи optimoptions
(рекомендуемый) или путем экспорта опций из приложения Оптимизации. Для получения дополнительной информации смотрите Импортирование и экспортирование Вашей работы (Optimization Toolbox).
optimoptions
скрывает опции, перечисленные курсивом. См. Опции, которые Скрывает optimoptions.
Значения в {}
обозначьте значение по умолчанию.
{}*
представляет значение по умолчанию, когда существуют линейные ограничения, и для MutationFcn
также, когда существуют границы.
Я* указываю на тот ga
опции указателей для целочисленных ограничений по-другому; это обозначение не применяется к gamultiobj
.
NM указывает, что опция не применяется к gamultiobj
.
Опции для ga
, Целочисленный ga
, и gamultiobj
Опция | Описание | Значения |
---|---|---|
ConstraintTolerance | Определяет выполнимость относительно нелинейных ограничений. Кроме того, Для структуры опций используйте | Положительная скалярная величина | |
| Я* Функция, которая создает начальную генеральную совокупность. Задайте как имя встроенной функции создания или указателя на функцию. См. Опции Населения. |
|
| Я* Функция, что использование алгоритма, чтобы создать перекрестные дочерние элементы. Задайте как имя встроенной перекрестной функции или указателя на функцию. См. Перекрестные Опции. |
|
| Часть населения при следующем поколении, не включая элитные дочерние элементы, что перекрестная функция создает. | Положительная скалярная величина | |
| Level of display. |
|
| Функция, которая вычисляет меру по расстоянию индивидуумов. Задайте как имя встроенной функции меры по расстоянию или указателя на функцию. Значение применяется к переменной решения или пробелу проекта (генотип) или к функциональному пространству (фенотип). Для структуры опций используйте указатель на функцию, не имя. |
|
| Положительное целое число NM, задающее, сколько индивидуумов в текущем поколении, как гарантирует, выживут к следующему поколению. Не используемый в | Положительное целое число | |
| NM, Если функция фитнеса достигает значения | Скаляр | |
| Функция, которая масштабирует значения функции фитнеса. Задайте как имя встроенной функции масштабирования или указателя на функцию. Опция, недоступная |
|
FunctionTolerance | Алгоритм останавливается если среднее относительное изменение в лучшем значении функции фитнеса по Для Для структуры опций используйте | Положительная скалярная величина | |
| Я* Функция, которая продолжает оптимизацию после В качестве альтернативы массив ячеек, задающий гибридную функцию и ее опции. См. ga Гибридную Функцию. Для | Имя функции или указатель | или 1 2 массив ячеек | |
InitialPenalty | NM I* Начальное значение параметра штрафа | Положительная скалярная величина | |
| Начальная генеральная совокупность раньше отбирала генетический алгоритм. Имеет до Для структуры опций используйте | Матрица | |
| Матрица или вектор, указывающий диапазон индивидуумов в начальной генеральной совокупности. Применяется Для структуры опций используйте | Матрица или вектор | |
| Я* Начальные баллы раньше определял фитнес. Имеет до Для структуры опций используйте | Вектор-столбец для одной цели | матрица для многоцелевого | |
| Максимальное количество итераций перед остановами алгоритма. Для структуры опций используйте | Положительное целое число | |
| Алгоритм останавливается если среднее относительное изменение в лучшем значении функции фитнеса по Для Для структуры опций используйте | Положительное целое число | |
| NM, который останавливает алгоритм, если нет никакого улучшения целевой функции для Для структуры опций используйте | Положительная скалярная величина |
| Остановки алгоритма после выполняющийся Для структуры опций используйте | Положительная скалярная величина | |
MigrationDirection | Направление миграции. См. Опции Миграции |
|
MigrationFraction | Скаляр от 0 до 1 определения части индивидуумов в каждом поднаселении, которое мигрирует на различное поднаселение. См. Опции Миграции | Скаляр | |
MigrationInterval | Положительное целое число, задающее количество поколений, которые происходят между миграциями индивидуумов между подпопуляциями. См. Опции Миграции. | Положительное целое число | |
| Я* Функция, которая производит дочерние элементы мутации. Задайте как имя встроенной функции мутации или указателя на функцию. См. Опции Мутации. |
|
| Нелинейный ограничительный алгоритм. Смотрите Нелинейные Ограничительные Алгоритмы решателя. Опция, неизменная для Для структуры опций используйте |
|
| Функции, что Для структуры опций используйте | Указатель на функцию или cell-массив указателей на функцию | |
| Скаляр от 0 до 1 определения части индивидуумов, чтобы сохранить первую переднюю сторону Парето, в то время как решатель выбирает индивидуумов из более высоких передних сторон для | Скаляр | |
PenaltyFactor | NM I* параметр обновления Штрафа. | Положительная скалярная величина | |
| Функция, которая отображает на графике данные, вычисленные алгоритмом. Задайте как имя встроенной функции построения графика, указателя на функцию или массива ячеек встроенных имен или указателей на функцию. См. Опции Графика. Для структуры опций используйте |
|
PlotInterval | Положительное целое число, задающее количество поколений между последовательными вызовами функций построения графика. | Положительное целое число | |
| Размер населения. | Положительное целое число | |
| Тип данных населения. Должен быть |
|
| Я* Функция, которая выбирает родительские элементы дочерних элементов перекрестного соединения и мутации. Задайте как имя встроенной функции выбора или указателя на функцию.
|
|
StallTest | NM, Останавливающий тестовый тип. |
|
UseParallel | Вычислите фитнес и нелинейные ограничительные функции параллельно. Смотрите Векторизуют и Параллельные Опции (Оценка Функции пользователя) и Как Использовать Параллельную обработку в Global Optimization Toolbox. |
|
| Задает, векторизованы ли функции. Смотрите Векторизуют и Параллельные Опции (Оценка Функции пользователя) и Векторизуют Функцию Фитнеса. Для структуры опций используйте |
|
Пример: optimoptions('ga','PlotFcn',@gaplotbestf)
IntCon
— Целочисленные переменныеЦелочисленные переменные, заданные как вектор положительных целых чисел, принимающих значения от 1
к nvars
. Каждое значение в IntCon
представляет x
компонент, который с целочисленным знаком.
Когда IntCon
непусто, Aeq
и beq
должна быть пустая запись ([]
), и nonlcon
должен возвратиться пустой для ceq
. Для получения дополнительной информации о целочисленном программировании смотрите Смешанную Целочисленную Оптимизацию.
Пример: указывать что ровные записи в x
с целочисленным знаком, набор IntCon
к 2:2:nvars
Типы данных: double
problem
— Описание проблемыОписание проблемы, заданное как структура, содержащая эти поля.
fitnessfcn | Функции фитнеса |
nvars | Количество переменных проекта |
Aineq |
|
Bineq |
|
Aeq |
|
Beq |
|
lb | Нижняя граница на |
ub | Верхняя граница на |
nonlcon | Нелинейная ограничительная функция |
rngstate | Дополнительное поле, чтобы сбросить состояние генератора случайных чисел |
solver |
|
options | Опции, созданные с помощью |
Создайте problem
путем экспорта проблемы из приложения Оптимизации, как описано в Импортировании и экспортировании работы (Optimization Toolbox).
Типы данных: struct
x
РешениеРешение, возвращенное как вектор действительных чисел. x
лучшая точка что ga
расположенный во время его итераций.
fval
— Значение целевой функции в решенииЗначение целевой функции в решении, возвращенном как вещественное число. Обычно fval
= fun(x)
.
exitflag
— Обоснуйте ga
остановленныйОбоснуйте тот ga
остановленный, возвращенный как целое число.
Exitflag | Значение |
---|---|
1
|
Без нелинейных ограничений — Среднее совокупное изменение в значении фитнеса функционируют по |
С нелинейными ограничениями — Величина меры по взаимозависимости (см. Меру по Взаимозависимости) меньше | |
3
|
Значение функции фитнеса не изменилось в |
4
|
Величина шага, меньшего, чем точность машины и ограничительное нарушение, меньше |
5
|
Минимальный предел фитнеса |
0
|
Максимальное количество поколений |
-1
|
Оптимизация отключена выходной функцией или функцией построения графика. |
-2
|
Никакая допустимая точка не найдена. |
-4
|
Остановите ограничение по времени |
-5
|
Ограничение по времени |
Когда существуют целочисленные ограничения, ga
использует значение фитнеса штрафа вместо значения фитнеса для критерия остановки.
output
— Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенном как структура с этими полями:
problemtype
— Проблемный тип, один из:
'unconstrained'
'boundconstraints'
'linearconstraints'
'nonlinearconstr'
'integerconstraints'
rngstate
— Состояние генератора случайных чисел MATLAB, незадолго до запущенного алгоритма. Можно использовать значения в rngstate
воспроизвести выход ga
. Смотрите воспроизводят результаты.
generations
— Количество поколений вычисляется.
funccount
— Количество оценок функции фитнеса.
message
Причина отключения алгоритма.
maxconstraint
— Максимальное ограничительное нарушение, если таковые имеются.
population
— Итоговое населениеИтоговое население, возвращенное как PopulationSize
- nvars
матрица. Строки population
индивидуумы.
scores
— Итоговые счетаИтоговые счета, возвращенные как вектор-столбец.
Для проблем нецелого числа итоговые счета являются значениями функции фитнеса строк population
.
Для целочисленных задач итоговые счета являются значениями фитнеса штрафа членов населения. Смотрите Целое число ga Алгоритм.
В Увеличенном лагранжевом нелинейном ограничительном решателе complementarity measure является нормой вектора, элементами которого является ciλi, где ci является нелинейным нарушением ограничения неравенства, и λi является соответствующим множителем Лагранжа. Смотрите Увеличенный лагранжевый Генетический алгоритм.
Записать функцию дополнительными параметрами к независимым переменным, которые могут быть вызваны ga
, смотрите Передающие Дополнительные Параметры (Optimization Toolbox).
Для проблем, которые используют население, вводят Double Vector
(значение по умолчанию), ga
не принимает функции, входные параметры которых имеют тип complex
. Чтобы решить задачи, включающие комплексные данные, запишите свои функции так, чтобы они приняли вектора действительных чисел путем разделения действительных и мнимых частей.
Для описания генетического алгоритма смотрите Как работы Генетического алгоритма.
Для описания алгоритма частично-целочисленного программирования смотрите Целое число ga Алгоритм.
Для описания нелинейных ограничительных алгоритмов смотрите Нелинейные Ограничительные Алгоритмы решателя.
Поведение изменяется в R2019b
Когда функция фитнеса детерминирована, ga
не переоценивает функцию фитнеса на элите (текущий лучший) индивидуумы. Можно управлять этим поведением путем доступа к новому state.EvalElites
поле и изменение его в пользовательской выходной функции или пользовательской функции построения графика. Точно так же, когда начальная генеральная совокупность имеет дублирующихся участников, ga
оценивает каждого уникального участника только однажды. Можно управлять этим поведением в пользовательской выходной функции или пользовательской функции построения графика путем доступа и изменения нового state.HaveDuplicates
поле . Для получения дополнительной информации смотрите Пользовательскую Выходную функцию для Генетического алгоритма или Пользовательскую Функцию построения графика.
Для получения дополнительной информации о двух новых полях, смотрите Структуру состояния.
[1] Голдберг, Дэвид Э., генетические алгоритмы в Search, Optimization & Machine Learning, Аддисоне-Уэсли, 1989.
[2] А. Р. Конн, Н. Ай. М. Гулд и Ph Л. Тойнт. “Глобально Конвергентный Увеличенный лагранжевый Алгоритм для Оптимизации с Общими ограничениями и Простыми Границами”, SIAM Journal согласно Числовому Анализу, Объем 28, Номер 2, страницы 545-572, 1991.
[3] А. Р. Конн, Н. Ай. М. Гулд и Ph Л. Тойнт. “Глобально Конвергентный Увеличенный лагранжевый Алгоритм Барьера для Оптимизации с Общими Ограничениями неравенства и Простыми Границами”, Математика Расчета, Объем 66, Номер 217, страницы 261-288, 1997.
Чтобы запуститься параллельно, установите 'UseParallel'
опция к true
.
опции = optimoptions ('
solvername
', 'UseParallel', верный)
Для получения дополнительной информации смотрите, Как Использовать Параллельную обработку в Global Optimization Toolbox.
У вас есть модифицированная версия этого примера. Вы хотите открыть этот пример со своими редактированиями?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.