Найти минимум функции с помощью генетического алгоритма
находит локальный неограниченный минимум, x = ga(fun,nvars)x, к целевой функции, fun. nvars - размерность (количество конструктивных переменных) fun.
Примечание
В разделе Передача дополнительных параметров (Passing Extra Parameters) объясняется, как передать дополнительные параметры целевой функции и, при необходимости, нелинейным функциям ограничения.
подвергает минимизацию ограничениям, определенным в 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.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 функция в области и x2/2) 4.
Для этого сначала необходимо записать функцию. ellipsecons.m возвращает ограничение неравенства в первом выводе, cи ограничение равенства во втором выводе, ceq. Сохранить файл ellipsecons.m в папку на вашем пути MATLAB ®.
type ellipseconsfunction [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около-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 элементы.
Например, для указания
x1 + 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.
Например, для указания
x1 + 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 элементы.
Например, для указания
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 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.
Например, для указания
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 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 или структура.
optimoptions скрывает параметры, перечисленные курсивом. См. раздел Опциональные опции скрытия.
Значения в {} укажите значение по умолчанию.
{}* представляет значение по умолчанию при наличии линейных ограничений и для MutationFcn также при наличии границ.
I * указывает, чтоga по-разному обрабатывает опции целочисленных ограничений; эта нотация не применяется к gamultiobj.
NM указывает, что опция не применяется к gamultiobj.
Опции для ga, Целое число ga, и gamultiobj
| Выбор | Описание | Ценности |
|---|---|---|
ConstraintTolerance | Определяет выполнимость нелинейных ограничений. Также, Для структуры опций используйте | Положительный скаляр | |
| I * Функция, создающая исходную популяцию. Укажите в качестве имени встроенной функции создания или дескриптора функции. См. раздел Параметры заполнения. |
|
| I * Функция, которую алгоритм использует для создания перекрестных потомков. Укажите в качестве имени встроенной перекрестной функции или дескриптора функции. См. раздел Параметры кроссовера. |
|
| Доля населения у следующего поколения, не включая элитных детей, которую создает функция кроссовера. | Положительный скаляр | |
| Уровень отображения. |
|
| Функция, которая вычисляет измерение расстояния отдельных лиц. Укажите в качестве имени встроенной функции измерения расстояния или дескриптора функции. Значение применяется к переменной решения или пространству проектирования (генотип) или к пространству функций (фенотип). Дефолт Для структуры опций используйте дескриптор функции, а не имя. |
|
| NM Положительное целое число, указывающее, сколько людей в текущем поколении гарантированно выживет до следующего поколения. Не используется в | Положительное целое число | |
| NM Если функция пригодности достигает значения | Скаляр | |
| Функция, которая масштабирует значения функции фитнеса. Укажите в качестве имени встроенной функции масштабирования или дескриптора функции. Параметр недоступен для |
|
FunctionTolerance | Алгоритм останавливается, если среднее относительное изменение значения функции наилучшего фитнеса превышает Для Для структуры опций используйте | Положительный скаляр | |
| I * Функция, которая продолжает оптимизацию после Альтернативно, массив ячеек, задающий гибридную функцию и ее опции. См. раздел Гибридная функция ga. Для См. раздел Когда использовать гибридную функцию. | Имя функции или дескриптор | или массив ячеек 1 на 2 | |
InitialPenalty | NM I * Начальное значение штрафного параметра | Положительный скаляр | |
| Первоначальная популяция использовалась для формирования генетического алгоритма. Имеет до Для структуры опций используйте | Матрица | |
| Матрица или вектор, указывающий диапазон особей в начальной популяции. Относится к Для структуры опций используйте | Матрица или вектор | |
| I * Начальные баллы, используемые для определения пригодности. Имеет до Для структуры опций используйте | Вектор столбца для одного объектива | матрица для мультиобъектива | |
| Максимальное число итераций перед остановкой алгоритма. Для структуры опций используйте | Положительное целое число | |
| Алгоритм останавливается, если среднее относительное изменение значения функции наилучшего фитнеса превышает Для Для структуры опций используйте | Положительное целое число | |
| NM Алгоритм останавливается, если нет улучшения целевой функции для Для структуры опций используйте | Положительный скаляр |
| Алгоритм останавливается после запуска после Для структуры опций используйте | Положительный скаляр | |
MigrationDirection | Направление миграции. См. раздел Параметры переноса |
|
MigrationFraction | Скаляр от 0 до 1, указывающий долю индивидуумов в каждой субпопуляции, которая мигрирует в другую субпопуляцию. См. раздел Параметры переноса | Скаляр | |
MigrationInterval | Положительное целое число, указывающее число поколений, которые происходят между миграциями индивидуумов между субпопуляциями. См. раздел Параметры переноса. | Положительное целое число | |
| I * Функция, которая производит детей мутации. Укажите в качестве имени встроенной мутационной функции или дескриптора функции. См. раздел Параметры мутации. |
|
| Алгоритм нелинейных ограничений. См. раздел Алгоритмы решателя нелинейных ограничений. Опция, неизменяемая для Для структуры опций используйте |
|
| Функции, которые Для структуры опций используйте | Дескриптор функции или массив ячеек дескрипторов функции | |
| Скаляр от 0 до 1, указывающий долю отдельных лиц, которые должны оставаться на первом фронте Парето, в то время как решатель выбирает отдельных лиц с более высоких фронтов, для | Скаляр | |
PenaltyFactor | NM I * Параметр обновления штрафа. | Положительный скаляр | |
| Функция, отображающая данные, вычисленные алгоритмом. Укажите в качестве имени встроенной функции печати, дескриптора функции или массива ячеек встроенных имен или дескрипторов функций. См. раздел Параметры печати. Для структуры опций используйте |
|
PlotInterval | Положительное целое число, указывающее число поколений между последовательными вызовами функций графика. | Положительное целое число | |
| Численность населения. | Положительное целое число | |
| Тип данных населения. Должно быть |
|
| I * Функция, которая выбирает родителей детей кроссовера и мутации. Укажите в качестве имени встроенной функции выбора или дескриптора функции .
|
|
StallTest | Тип теста остановки NM. |
|
UseParallel | Вычислите функции пригодности и нелинейных ограничений параллельно. См. разделы Параметры векторизации и параллелизма (оценка пользовательских функций) и Использование параллельной обработки в инструментарии глобальной оптимизации. |
|
| Указывает, являются ли функции векторизованными. См. разделы Векторизация и параллельные опции (оценка пользовательских функций) и Векторизация фитнес-функции. Для структуры опций используйте |
|
Пример: optimoptions('ga','PlotFcn',@gaplotbestf)
IntCon - Целочисленные переменныеЦелочисленные переменные, заданные как вектор положительных целых чисел, берущих значения из 1 кому nvars. Каждое значение в IntCon представляет x компонент, который является целочисленным.
Примечание
Когда IntCon является непустым, Aeq и beq должна быть пустой записью ([]), и nonlcon должен вернуться пустым для ceq. Дополнительные сведения о целочисленном программировании см. в разделе Оптимизация смешанного целого ga.
Пример: Чтобы указать, что четные записи в 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 остановлено, возвращено как целое число.
| Флаг выхода | Значение |
|---|---|
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около-nvars матрица. Строки population являются личностями.
scores - Итоговые баллыОкончательные оценки, возвращенные в виде вектора столбца.
Для не целочисленных проблем окончательные оценки являются значениями функции пригодности строк population.
Для целочисленных проблем окончательные оценки представляют собой штрафные значения пригодности членов популяции. См. раздел Алгоритм целочисленной ga.
В решателе дополненных лагранжевых нелинейных ограничений мера комплементарности является нормой вектора, элементами которого являются ciλ i, где ci - нарушение ограничения нелинейных неравенств, λ i - соответствующий множитель Лагранжа. См. Дополненный лагранжианский генетический алгоритм.
Чтобы записать функцию с дополнительными параметрами в независимые переменные, которые могут быть вызваны ga, см. раздел Передача дополнительных параметров.
Для проблем, использующих тип заполнения Double Vector (по умолчанию), ga не принимает функции, входы которых имеют тип complex. Для решения задач, связанных со сложными данными, запишите свои функции так, чтобы они принимали вещественные векторы, разделяя действительную и мнимую части.
Описание генетического алгоритма см. в разделе Как работает генетический алгоритм.
Описание алгоритма смешанного целочисленного программирования см. в разделе Алгоритм целочисленного ga.
Описание алгоритмов нелинейных ограничений см. в разделе Алгоритмы решателя нелинейных ограничений.
Задача «Оптимизировать интерактивный редактор» обеспечивает визуальный интерфейс для ga.
ga Выполнение меньшего количества оценок фитнес-функцийВ R2019b изменилось поведение
Когда функция пригодности является детерминированной, ga не переоценивает фитнес-функцию на элитных (нынешних лучших) личностях. Вы можете управлять этим поведением, обращаясь к новому state.EvalElites и изменение его в пользовательской функции вывода или пользовательской функции печати. Аналогичным образом, когда первоначальная популяция имеет дублирующих членов, ga оценивает каждый уникальный элемент только один раз. Вы можете управлять этим поведением в пользовательской функции вывода или пользовательской функции печати, обращаясь к новому и изменяя его. state.HaveDuplicates поле. Дополнительные сведения см. в разделе Пользовательская функция вывода для генетического алгоритма или Пользовательская функция графика.
Дополнительные сведения о двух новых полях см. в разделе Структура состояния.
[1] Голдберг, Дэвид Э., Генетические алгоритмы в поиске, оптимизации и машинном обучении, Эддисон-Уэсли, 1989.
[2] А. Р. Конн, Н. И. М. Гулд и Ф. Л. Тоунт. «Глобально конвергентный дополненный лагранжевый алгоритм оптимизации с общими ограничениями и простыми границами», SIAM Journal on Numerical Analysis, Volume 28, Number 2, pages 545-572, 1991.
[3] А. Р. Конн, Н. И. М. Гулд и Ф. Л. Тоунт. «Глобально конвергентный дополненный лагранжевый барьерный алгоритм для оптимизации с общими ограничениями неравенства и простыми границами», Математика вычислений, том 66, число 217, стр. 261-288, 1997.
Для параллельного выполнения установите 'UseParallel' опция для true.
options = optimoptions('solvername','UseParallel',true)
Дополнительные сведения см. в разделе Использование параллельной обработки в инструментарии глобальной оптимизации.
gamultiobj | Оптимизировать | optimoptions | particleswarm | patternsearch
Имеется измененная версия этого примера. Открыть этот пример с помощью изменений?
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.