Найдите минимум функции с помощью генетического алгоритма
находит локальный минимум без ограничений, x
= ga(fun
,nvars
)x
, к целевой функции, fun
. nvars
- размерность (количество конструктивных переменных) fun
.
Примечание
Передача дополнительных параметров объясняет, как передать дополнительные параметры целевой функции и нелинейным ограничительным функциям, если это необходимо.
подвергает минимизацию ограничениям, заданным в 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
The 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.9991 0.0000
Ограничения выполняются в пределах значения по умолчанию допуска ограничений, 1e-3
. Чтобы увидеть это, вычислите A*x' - b
, который должен иметь отрицательные компоненты.
disp(A*x' - b)
0.0009 -5.9991
Используйте генетический алгоритм, чтобы минимизировать 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)
9.9998e-04
disp(Aeq*x' - beq)
-9.9937e-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.9992
disp(Aeq*x' - beq)
-8.9237e-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.9999e-07
disp(Aeq*x' - beq)
-9.8695e-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
hybridflag: []
Используйте генетический алгоритм, чтобы минимизировать 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
-by- 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
-by- nvars
матрица, где M
количество неравенств.
A
кодирует M
линейное неравенство
A*x <= b
,
где x
является вектор-столбец nvars
переменные x(:)
, и b
- вектор-столбец с M
элементы.
Для примера, чтобы задать
<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2 10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2 20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2 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
-by- N
.
Для примера, чтобы задать
<reservedrangesplaceholder1> 1 + 2 <reservedrangesplaceholder0> 2 10
3 <reservedrangesplaceholder1> 1 + 4 <reservedrangesplaceholder0> 2 20
5 <reservedrangesplaceholder1> 1 + 6 <reservedrangesplaceholder0> 2 30,
задайте следующие ограничения:
A = [1,2;3,4;5,6]; b = [10;20;30];
Пример: Чтобы задать, что переменные управления равны 1 или менее, дайте ограничения A = ones(1,N)
и b = 1
.
Типы данных: double
Aeq
- Линейные ограничения равенстваЛинейные ограничения равенства, заданные как действительная матрица. Aeq
является Me
-by- nvars
матрица, где Me
- количество равенств.
Aeq
кодирует Me
линейные равенства
Aeq*x = beq
,
где x
является вектор-столбец N
переменные x(:)
, и beq
- вектор-столбец с Me
элементы.
Для примера, чтобы задать
<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 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
-by- N
.
Для примера, чтобы задать
<reservedrangesplaceholder2> 1 + 2 <reservedrangesplaceholder1> 2 + 3 <reservedrangesplaceholder0> 3 = 10
2 <reservedrangesplaceholder2> 1 + 4 <reservedrangesplaceholder1> 2 + <reservedrangesplaceholder0> 3 = 20,
задайте следующие ограничения:
Aeq = [1,2,3;2,4,1]; beq = [10;20];
Пример: Чтобы задать, что переменные управления равны 1, дайте ограничения Aeq = ones(1,N)
и beq = 1
.
Типы данных: double
lb
- Нижние границы[]
(по умолчанию) | вектор действительных чисел или массивНижние границы, заданные как вектор действительных чисел или массив типа double. lb
представляет нижние границы поэлементно в lb
≤ x
≤ ub
.
Внутренне, ga
преобразует массив lb
в векторную lb(:)
.
Пример: lb = [0;-Inf;4]
означает x(1) ≥ 0
, x(3) ≥ 4
.
Типы данных: double
ub
- Верхние границы[]
(по умолчанию) | вектор действительных чисел или массивВерхние границы, заданные как вектор действительных чисел или массив типа double. 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
или структуру.
optimoptions
скрывает опции, перечисленные курсивом. Смотрите Опции, которые скрывает оптимизация.
Значения в {}
обозначить значение по умолчанию.
{}*
представляет значение по умолчанию, когда существуют линейные ограничения, и для MutationFcn
также когда есть ограничения.
I * указывает, чтоga
обрабатывает опции для целочисленных ограничений по-разному; это обозначение не применяется к gamultiobj
.
NM указывает, что опция не применяется к gamultiobj
.
Опции для ga
, Целое число ga
, и gamultiobj
Опция | Описание | Значения |
---|---|---|
ConstraintTolerance | Определяет допустимость относительно нелинейных ограничений. Кроме того, Для структуры опций используйте | Положительная скалярная величина | |
| I * Функция, которая создает начальное совокупность. Задайте как имя встроенной функции создания или указателя на функцию. См. «Опции населения». |
|
| I * Функция, которую алгоритм использует для создания детей-кроссоверов. Задайте как имя встроенной функции кроссовера или указателя на функцию. См. Раздел «Опции перекрестия» |
|
| Та часть населения следующей генерации, не включая элитных детей, которую создает функция кроссовера. | Положительная скалярная величина | |
| Level of display. |
|
| Функция, которая вычисляет меру расстояния для индивидуумов. Задайте как имя встроенной функции измерения расстояния или указателя на функцию. Значение применяется к переменной принятия решений или проекту (генотипу) или к пространству функций (фенотипу). Значение по умолчанию Для структуры опций используйте указатель на функцию, а не имя. |
|
| NM Положительное целое число, определяющее, сколько индивидуумы в текущем поколении гарантированно доживут до следующей генерации. Не используется в | Положительное целое число | |
| NM Если функция соответствия достигает значения | Скалярные | |
| Функция, которая масштабирует значения функции соответствия. Задайте как имя встроенной функции масштабирования или указателя на функцию. Опция недоступна для |
|
FunctionTolerance | Алгоритм останавливается, если среднее относительное изменение наилучшего значения функции соответствия над Для Для структуры опций используйте | Положительная скалярная величина | |
| I * Функция, которая продолжает оптимизацию после Кроме того, массив ячеек, задающий гибридную функцию и ее опции. См. Ga Hybrid Function. Для Смотрите, когда использовать гибридную функцию. | Имя функции или указатель | или массив ячеек 1 на 2 | |
InitialPenalty | NM I * Начальное значение параметра штрафа | Положительная скалярная величина | |
| Начальная генеральная совокупность используется для посева генетического алгоритма. Имеет до Для структуры опций используйте | Матрица | |
| Матрица или вектор, задающий область значений индивидуумов в начальную генеральную совокупность. Применяется к Для структуры опций используйте | Матрица или векторная | |
| I * Начальные счета использовались для определения соответствия. Имеет до Для структуры опций используйте | Вектор-столбец для одной матрицы | целей для мультиобъективных | |
| Максимальное количество итераций перед остановкой алгоритма. Для структуры опций используйте | Положительное целое число |
| Алгоритм останавливается, если среднее относительное изменение наилучшего значения функции соответствия над Для Для структуры опций используйте | Положительное целое число | |
| NM Алгоритм останавливается, если нет улучшения целевой функции для Для структуры опций используйте | Положительная скалярная |
| Алгоритм останавливается после запуска после Для структуры опций используйте | Положительная скалярная величина | |
MigrationDirection | Направление миграции. См. «Опции миграции» |
|
MigrationFraction | Скаляр от 0 до 1, задающий долю индивидуумов в каждом поднаселении, которая мигрирует к другому поднаселению. См. «Опции миграции» | Скалярные | |
MigrationInterval | Положительное целое число, определяющее количество поколений, которые происходят между миграциями индивидуумов между поднаселениями. См. раздел «Опции миграции». | Положительное целое число | |
| I * Функция, которая производит детей мутаций. Задайте как имя встроенной функции мутации или указателя на функцию. См. Опции мутации. |
|
| Нелинейный алгоритм ограничения. См. Алгоритмы нелинейного решателя ограничений. Опция не изменяется для Для структуры опций используйте |
|
| Функции, которые Для структуры опций используйте | Указатель на функцию или cell-массив указателей на функцию | |
| Скаляр от 0 до 1, задающий долю индивидуумов, которые сохраняют на первом фронте Парето, в то время как решатель выбирает индивидуумов с более высоких фронтов, для | Скалярные | |
PenaltyFactor | NM I * Параметр обновления штрафа. | Положительная скалярная величина | |
| Функция, которая строит графики данных, вычисленных алгоритмом. Задайте как имя встроенной функции построения графика, указателя на функцию или массива ячеек со встроенными именами или указателями на функцию. См. Опции графика» Для структуры опций используйте |
|
PlotInterval | Положительное целое число, задающее количество поколений между последовательными вызовами функций построения графика. | Положительное целое число | |
| Численность населения. | Положительное целое число | |
| Тип данных населения. Должен быть |
|
| I * Функция, выбирающая родительские элементы детей-кроссоверов и мутаций. Задайте как имя встроенной функции выбора или указателя на функцию .
|
|
StallTest | NM Остановка типа теста. |
|
UseParallel | Вычислите соответствие и нелинейные функции ограничения параллельно. См. «Векторизация и параллельные Опции» (User Вычисления функции) и «Как использовать параллельную обработку в Global Optimization Toolbox». |
|
| Определяет, векторизированы ли функции. См. «Векторизация и параллельные Опции» (User Вычисления функции) и «Векторизация функции соответствия». Для структуры опций используйте |
|
Пример: 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 | Нелинейная функция ограничения |
intcon | Индексы целочисленных переменных |
rngstate | Поле для сброса состояния генератора случайных чисел |
solver |
|
options | Опции, созданные с помощью |
Необходимо задать поля fitnessfcn
, nvars
, и options
. Оставшаяся часть опциональна для ga
.
Типы данных: struct
x
- РешениеРешение, возвращенное как вектор действительных чисел. x
является лучшей точкой, который ga
расположен во время его итераций.
fval
- Значение целевой функции в решенииЗначение целевой функции в решении, возвращаемое как действительное число. Обычно fval
= fun(x)
.
exitflag
- Причины ga
остановленныйПричина того, что ga
stop, возвращается как целое число.
Выходной флаг | Значение |
---|---|
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
- Максимальное нарушение ограничений, если таковые имеются.
hybridflag
- Выходной флаг из гибридной функции. Относится к HybridFcn
options
. Не применяется к gamultiobj
.
population
- Окончательная численность населенияОкончательное население, возвращенная как PopulationSize
-by- nvars
матрица. Строки population
являются индивидуумами.
scores
- Окончательные счетаФинальные счета, вернулись как вектор-столбец.
Для нецелочисленных задач конечными счетами являются значения функции соответствия строк population
.
Для целочисленных задач конечными счетами являются значения соответствия штрафа для населения представителей. См. Целочисленный алгоритм ga.
В Дополненном Лагранжевом решателе нелинейных ограничений complementarity measure является нормой вектора, элементы которого ciλi, где ci является нелинейным нарушением ограничений неравенства, и λi является соответствующим множителем Лагранжа. См. Дополненный Лагрангианский Генетический Алгоритм.
Чтобы записать функцию с дополнительными параметрами в независимые переменные, которые можно вызвать ga
, см. «Передача дополнительных параметров».
Для задач, которые используют тип населения Double Vector
(по умолчанию), ga
не принимает функции, входы которых имеют тип complex
. Чтобы решить проблемы, связанные со комплексными данными, запишите ваши функции, чтобы они приняли векторы действительных чисел, путем разделения действительной и мнимой частей.
Для описания генетического алгоритма смотрите, Как работает Генетический Алгоритм.
Описание алгоритма смешанного целочисленного программирования смотрите в Целочисленном алгоритме ga.
Описание нелинейных алгоритмов ограничений см. в разделе Алгоритмы решателя ограничений.
Задача Optimize Live Editor обеспечивает визуальный интерфейс для ga
.
ga
Выполняет меньше вычислений функции фитнесаПоведение изменено в R2019b
Когда функция соответствия является детерминированной, ga
не переоценивает функцию фитнеса на элитных (текущих лучших) индивидуумах. Вы можете управлять этим поведением, получая доступ к новому state.EvalElites
и изменение его в пользовательской выходной функции или пользовательской функции построения графика. Точно так же, когда у начальная генеральная совокупность есть дублирующие представители, ga
оценивает каждый уникальный представитель только один раз. Вы можете управлять этим поведением в пользовательской выходной функции или пользовательской функции построения графика путем доступа и изменения нового state.HaveDuplicates
поле. Для получения дополнительной информации смотрите Пользовательскую Выходную Функцию для Генетического Алгоритма или Пользовательскую Функцию построения графика.
Для получения дополнительной информации о двух новых полях смотрите The State Structure.
[1] Goldberg, David E., Genetic Algorithms in Search, Optimization & Машинное Обучение, Addison-Wesley, 1989.
[2] А. Р. Конн, Н. И. М. Гулд, и Ф. Л. Тойнт. Глобально сходимый дополненный алгоритм Лагранжа для оптимизации с общими ограничениями и простыми границами, SIAM Journal по численному анализу, том 28, номер 2, страницы 545-572, 1991.
[3] А. Р. Конн, Н. И. М. Гулд, и Ф. Л. Тойнт. «Глобально сходимый дополненный лагрангийский барьерный алгоритм для оптимизации с общими ограничениями неравенства и простыми границами», Математика расчетов, том 66, число 217, страницы 261-288, 1997.
Чтобы запустить параллельно, установите 'UseParallel'
опция для true
.
опции = optimoptions (
'solvername
',' UseParallel ', true)
Для получения дополнительной информации см. раздел «Как использовать параллельную обработку в Global Optimization Toolbox».
gamultiobj
| Оптимизировать | optimoptions
| particleswarm
| patternsearch
У вас есть измененная версия этого примера. Вы хотите открыть этот пример с вашими правками?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.