Найдите минимум функции с помощью генетического алгоритма
x = ga(fun,nvars)
x = ga(fun,nvars,A,b)
x = ga(fun,nvars,A,b,Aeq,beq)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)
x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon)
x = ga(fun,nvars,A,b,[],[],lb,ub,nonlcon,IntCon,options)
x = ga(problem)
[x,fval]
= ga(___)
[x,fval,exitflag,output]
= ga(___)
[x,fval,exitflag,output,population,scores]
= ga(___)
находит локальный неограниченный минимум, 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.9993 0.0000
Ограничения удовлетворены к в значении по умолчанию допуска ограничения, 1e-3
. Чтобы видеть это, вычислите A*x' - b
, который должен иметь отрицательные компоненты.
disp(A*x' - b)
0.0007 -5.9993
Используйте генетический алгоритм, чтобы минимизировать функцию 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.9997e-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.9993
disp(Aeq*x' - beq)
-9.4902e-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.9986e-07
disp(Aeq*x' - beq)
-9.9565e-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
искал минимум, получите результаты output
и exitflag
. Кроме того, постройте минимальное наблюдаемое значение целевой функции, в то время как решатель прогрессирует.
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: 3881
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
-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
.
Например, чтобы задать
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
-by-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
-by-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
-by-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
опции
Опции оптимизацииoptimoptions
| структураОпции оптимизации, заданные как вывод optimoptions
или структуры.
Создайте options
при помощи (рекомендуемого) optimoptions
или путем экспорта опций из приложения Оптимизации. Для получения дополнительной информации смотрите Импорт и Экспорт Вашей работы (Optimization Toolbox).
optimoptions
скрывает опции, перечисленные курсивом. См. Опции, которые Скрывает optimoptions.
Значения в {}
обозначают значение по умолчанию.
{}*
представляет значение по умолчанию, когда существуют линейные ограничения, и для MutationFcn
также, когда существуют границы.
Я* указываю, что ga
обрабатывает опции для целочисленных ограничений по-другому; это обозначение не применяется к gamultiobj
.
NM указывает, что опция не применяется к gamultiobj
.
Опции для ga
, целое число ga
и gamultiobj
Опция | Описание | Значения |
---|---|---|
ConstraintTolerance | Определяет выполнимость относительно нелинейных ограничений. Кроме того, Для структуры опций используйте | Положительная скалярная величина | |
| Я* Функция, которая создает начальную генеральную совокупность. Задайте как имя встроенной функции создания или указателя на функцию. См. Опции Генеральной совокупности. |
|
| Я* Функция, что использование алгоритма, чтобы создать перекрестные дочерние элементы. Задайте как имя встроенной перекрестной функции или указателя на функцию. См. Перекрестные Опции. |
|
| Часть генеральной совокупности при следующем поколении, не включая элитные дочерние элементы, что перекрестная функция создает. | Положительная скалярная величина | |
| Уровень отображения. |
|
| Функция, которая вычисляет меру по расстоянию людей. Задайте как имя встроенной функции меры по расстоянию или указателя на функцию. Значение применяется к переменной решения или пробелу проекта (генотип) или к функциональному пространству (фенотип). Для структуры опций используйте указатель на функцию, не имя. |
|
| Положительное целое число 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
использует значение фитнеса штрафа вместо значения фитнеса для критерия остановки.
вывод
Информация о процессе оптимизацииИнформация о процессе оптимизации, возвращенном как структура с этими полями:
проблемный тип
Проблемный тип, один из:
'unconstrained'
'boundconstraints'
'linearconstraints'
'nonlinearconstr'
'integerconstraints'
rngstate
— Состояние генератора случайных чисел MATLAB, незадолго до запущенного алгоритма. Можно использовать значения в rngstate
, чтобы воспроизвести вывод ga
. Смотрите Воспроизводят Результаты.
generations
— Количество поколений вычисляется.
funccount
— Количество оценок функции фитнеса.
сообщение
Причина отключения алгоритма.
maxconstraint
— Максимальное ограничительное нарушение, если таковые имеются.
population
— Итоговая генеральная совокупностьИтоговая генеральная совокупность, возвращенная как PopulationSize
-by-nvars
матрица. Строки population
являются людьми.
scores
— Итоговые счетаИтоговые счета, возвращенные как вектор-столбец.
Для проблем нецелого числа итоговые счета являются значениями функции фитнеса строк population
.
Для целочисленных проблем итоговые счета являются значениями фитнеса штрафа членов генеральной совокупности. Смотрите Целое число ga Алгоритм.
В Увеличенном лагранжевом нелинейном ограничительном решателе complementarity measure является нормой вектора, элементами которого является ciλi, где ci является нелинейным нарушением ограничения неравенства, и λi является соответствующим множителем Лагранжа. Смотрите Увеличенный лагранжевый Генетический алгоритм.
Чтобы записать функцию с дополнительными параметрами к независимым переменным, которые могут быть вызваны ga
, смотрите Передающие Дополнительные Параметры (Optimization Toolbox).
Для проблем, которые используют генеральную совокупность, вводят Double Vector
(значение по умолчанию), ga
не принимает функции, входные параметры которых имеют тип complex
. Чтобы решить проблемы, включающие комплексные данные, запишите свои функции так, чтобы они приняли вектора действительных чисел путем разделения действительных и мнимых частей.
Для описания генетического алгоритма смотрите Как работы Генетического алгоритма.
Для описания алгоритма частично-целочисленного программирования смотрите Целое число ga Алгоритм.
Для описания нелинейных ограничительных алгоритмов смотрите Нелинейные Ограничительные Алгоритмы решателя.
[1] Голдберг, Дэвид Э., генетические алгоритмы в Search, Optimization & Machine Learning, Аддисоне-Уэсли, 1989.
[2] А. Р. Конн, Н. Ай. М. Гулд и Ph Л. Тойнт. “Глобально Конвергентный Увеличенный лагранжевый Алгоритм для Оптимизации с Общими ограничениями и Простыми Границами”, SIAM Journal согласно Числовому Анализу, Объем 28, Номер 2, страницы 545-572, 1991.
[3] А. Р. Конн, Н. Ай. М. Гулд и Ph Л. Тойнт. “Глобально Конвергентный Увеличенный лагранжевый Алгоритм Барьера для Оптимизации с Общими Ограничениями неравенства и Простыми Границами”, Математика Вычисления, Объем 66, Номер 217, страницы 261-288, 1997.
Чтобы запуститься параллельно, установите опцию 'UseParallel'
на true
.
options = optimoptions('solvername','UseParallel',true)
Для получения дополнительной информации смотрите, Как Использовать Параллельную обработку в Global Optimization Toolbox.
1. Если смысл перевода понятен, то лучше оставьте как есть и не придирайтесь к словам, синонимам и тому подобному. О вкусах не спорим.
2. Не дополняйте перевод комментариями “от себя”. В исправлении не должно появляться дополнительных смыслов и комментариев, отсутствующих в оригинале. Такие правки не получится интегрировать в алгоритме автоматического перевода.
3. Сохраняйте структуру оригинального текста - например, не разбивайте одно предложение на два.
4. Не имеет смысла однотипное исправление перевода какого-то термина во всех предложениях. Исправляйте только в одном месте. Когда Вашу правку одобрят, это исправление будет алгоритмически распространено и на другие части документации.
5. По иным вопросам, например если надо исправить заблокированное для перевода слово, обратитесь к редакторам через форму технической поддержки.