이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
ga
유전 알고리즘을 사용하여 함수의 최솟값 구하기
구문
설명
는 목적 함수 x
= ga(fun
,nvars
)fun
에 대한 제약 조건 없는 국소 최솟값 x
를 구합니다. nvars
는 fun
의 차원(설계 변수 개수)입니다.
참고
추가 파라미터 전달하기에는 필요한 경우 추가 파라미터를 목적 함수와 비선형 제약 조건 함수에 전달하는 방법을 설명되어 있습니다.
예제
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)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-4.6793 -0.0860
선형 제약 조건이 있는 매끄럽지 않은 함수 최소화하기
유전 알고리즘을 사용하여 영역 x(1) + x(2) >= 1
및 x(2) <= 5 + x(1)
에서 ps_example
함수를 최소화합니다. 이 예제를 실행할 때 이 함수가 포함됩니다.
먼저 2개의 부등식 제약 조건을 행렬 형식 A*x <= b
로 변환합니다. 즉, 부등식의 왼쪽에서 x
변수를 구하고, 2개의 부등식을 모두 작거나 같게 만듭니다.
-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)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
0.9992 0.0000
제약 조건은 제약 조건 허용오차 1e-3
의 디폴트 값 내에서 충족됩니다. 이를 확인하기 위해 A*x' - b
를 계산해 보면 음수 성분이 있는 것을 알 수 있습니다.
disp(A*x' - b)
0.0008 -5.9992
선형 등식 및 부등식 제약 조건이 있는 매끄럽지 않은 함수 최소화하기
유전 알고리즘을 사용하여 영역 x(1) + x(2) >= 1
및 x(2) == 5 + x(1)
에서 ps_example
함수를 최소화합니다. 이 예제를 실행할 때 이 함수가 포함됩니다.
먼저 2개의 제약 조건을 행렬 형식 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)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-2.0005 2.9995
제약 조건이 ConstraintTolerance
의 디폴트 값인 1e-3
내에서 충족되는지 확인합니다.
disp(A*x' - b)
1.0000e-03
disp(Aeq*x' - beq)
-1.5494e-05
선형 제약 조건과 범위를 사용하여 최적화하기
유전 알고리즘을 사용하여 영역 x(1) + x(2) >= 1
및 x(2) == 5 + x(1)
에서 ps_example
함수를 최소화합니다. 이 예제를 실행할 때 ps_example
함수가 포함됩니다. 또한 범위 1 <= x(1) <= 6
및 -3 <= x(2) <= 8
을 설정합니다.
먼저 2개의 선형 제약 조건을 행렬 형식 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)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
1.0000 6.0000
선형 제약 조건이 ConstraintTolerance
의 디폴트 값인 1e-3
내에서 충족되는지 확인합니다.
disp(A*x' - b)
-6.0000
disp(Aeq*x' - beq)
-7.9765e-08
ga
를 사용하여 선형 제약 조건 최적화하기
유전 알고리즘을 사용하여 영역 및 에서 ps_example
함수를 최소화합니다. 이 예제를 실행할 때 ps_example
함수가 포함됩니다.
이렇게 하려면 첫 번째 출력값인 c
에서 부등식 제약 조건을 반환하고 두 번째 출력값인 ceq
에서 등식 제약 조건을 반환하는 함수 ellipsecons.m
을 사용합니다. 이 예제를 실행할 때 ellipsecons
함수가 포함됩니다. ellipsecons
코드를 검토합니다.
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;
함수 핸들을 nonlcon
인수로 ellipsecons
에 포함합니다.
nonlcon = @ellipsecons; fun = @ps_example; rng default % For reproducibility x = ga(fun,2,[],[],[],[],[],[],nonlcon)
Optimization finished: 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
에서 충족되는지 확인합니다. 제약 조건은 ConstraintTolerance
의 디폴트 값인 1e-3
내에서 c
≤0 및 ceq
=0일 때 충족됩니다.
[c,ceq] = nonlcon(x)
c = -1.0911
ceq = 5.4645e-04
디폴트가 아닌 옵션을 사용하여 최소화하기
유전 알고리즘을 사용하여 디폴트 값보다 작은 제약 조건 허용오차로 영역 x(1) + x(2) >= 1
및 x(2) == 5 + x(1)
에서 ps_example
함수를 최소화합니다. 이 예제를 실행할 때 ps_example
함수가 포함됩니다.
먼저 2개의 제약 조건을 행렬 형식 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)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-2.0000 3.0000
선형 제약 조건이 1e-6
내에서 충족되는지 확인합니다.
disp(A*x' - b)
9.9967e-07
disp(Aeq*x' - beq)
-2.9701e-08
정수 제약 조건을 사용하여 비선형 함수 최소화하기
유전 알고리즘을 사용하여 x(1)
이 정수라는 제약 조건을 적용하여 ps_example
함수를 최소화합니다. 이 예제를 실행할 때 이 함수가 포함됩니다.
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)
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
해와 함수 값 구하기
유전 알고리즘을 사용하여 정수 제약 비선형 문제를 최소화합니다. 최솟값을 갖는 위치와 최소 함수 값을 모두 구합니다. 이 예제를 실행할 때 목적 함수 ps_example
이 포함됩니다.
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)
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
fval = -1.8344
이 결과를 제약 조건이 없는 문제와 비교합니다.
[x,fval] = ga(fun,2)
ga stopped because the average change in the fitness value is less than options.FunctionTolerance.
x = 1×2
-4.6906 -0.0078
fval = -1.9918
진단 정보 얻기
유전 알고리즘을 사용하여 x(1)
정수 값을 갖도록 제약하는 ps_example
함수를 최소화합니다. 이 예제를 실행할 때 ps_example
함수가 포함됩니다. 솔버가 중지된 이유와 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)
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
x = 1×2
-5.0000 -0.0834
fval = -1.8344
exitflag = 1
output = struct with fields:
problemtype: 'integerconstraints'
rngstate: [1x1 struct]
generations: 86
funccount: 3311
message: 'ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and ...'
maxconstraint: 0
hybridflag: []
최종 모집단 및 점수 얻기
유전 알고리즘을 사용하여 x(1)
정수 값을 갖도록 제약하는 ps_example
함수를 최소화합니다. 이 예제를 실행할 때 ps_example
함수가 포함됩니다. 최종 모집단과 점수 벡터를 포함한 모든 출력값을 가져옵니다.
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);
ga stopped because the average change in the penalty function value is less than options.FunctionTolerance and the constraint violation is less than options.ConstraintTolerance.
최종 모집단의 처음 구성원 10개와 그에 대응하는 점수를 조사합니다. x(1)
은 이러한 모든 모집단 구성원에 대해 정수 값입니다. 정수 ga
알고리즘은 실현 가능한 정수 모집단만 생성합니다.
disp(population(1:10,:))
1.0e+03 * -0.0050 -0.0001 -0.0050 -0.0001 -1.6420 0.0027 -1.5070 0.0010 -0.4540 0.0104 -0.2530 -0.0011 -0.1210 -0.0003 -0.1040 0.1314 -0.0140 -0.0010 0.0160 -0.0002
disp(scores(1:10))
1.0e+06 * -0.0000 -0.0000 2.6798 2.2560 0.2016 0.0615 0.0135 0.0099 0.0001 0.0000
입력 인수
fun
— 목적 함수
함수 핸들 | 함수 이름
목적 함수로, 함수 핸들 또는 함수 이름으로 지정됩니다. 길이가 nvars
인 행 벡터를 받고 스칼라 값을 반환하는 목적 함수를 작성합니다.
'UseVectorized'
옵션이 true
인 경우 pop
×nvars
행렬을 받도록 fun
을 작성합니다. 여기서 pop
는 현재 모집단 크기입니다. 이 경우 fun
은 적합도 함수 값을 포함하는 pop
과 동일한 길이의 벡터를 반환합니다. ga
함수는 벡터화된 계산에서도 단일 구성원 모집단을 전달할 수 있으므로 fun
이 pop
에 대해 특정 크기를 가정하지 않도록 합니다.
예: fun = @(x)(x-[4,2]).^2
데이터형: char
| function_handle
| string
nvars
— 변수 개수
양의 정수
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
는 A
행렬과 관련된, 요소를 M
개 가진 벡터입니다. 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
는 Aeq
행렬과 관련된, 요소를 Me
개 가진 벡터입니다. 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
— 하한
[]
(디폴트 값) | 실수형 벡터 또는 배열
하한으로, 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.
벡터화된 제약 조건을 사용하는 방법에 대한 자세한 내용은 Vectorized Constraints 항목을 참조하십시오.
참고
PopulationType
옵션이 'bitString'
또는 'custom'
으로 설정된 경우 ga
는 비선형 제약 조건을 충족하도록 강제하지 않습니다.
intcon
이 비어 있지 않은 경우 nonlcon
(ceq
)의 두 번째 출력값은 빈 요소([]
)여야 합니다.
ga
가 nonlcon
을 사용하는 방법에 대한 자세한 내용은 Nonlinear Constraint Solver Algorithms for Genetic Algorithm 항목을 참조하십시오.
데이터형: char
| function_handle
| string
options
— 최적화 옵션
optimoptions
의 출력값 | 구조체
최적화 옵션으로, optimoptions
의 출력값 또는 구조체로 지정됩니다.
optimoptions
는 기울임꼴로 나열된 옵션을 숨깁니다. Options that optimoptions Hides 항목을 참조하십시오.
{}
의 값은 디폴트 값을 나타냅니다.{}*
은 선형 제약 조건이 있을 때의 디폴트 값을 나타내며,MutationFcn
에 대해서도 범위가 있을 경우 디폴트 값을 나타냅니다.I*은 정수 제약 조건에 대한 디폴트 값을 나타내거나 정수 제약 조건에 대한 특수 고려 사항을 나타냅니다.
NM은
gamultiobj
에 옵션이 적용되지 않음을 나타냅니다.
ga
및 gamultiobj
에 대한 옵션
옵션 | 설명 | 값 |
---|---|---|
ConstraintTolerance | 비선형 제약 조건과 관련하여 실현 가능성을 결정합니다. 또한 options 구조체의 경우 | 양의 스칼라 | |
| 초기 모집단을 만드는 함수입니다. 내장 생성 함수 이름 또는 함수 핸들로 지정합니다. Population Options 항목을 참조하십시오. |
|
| 알고리즘이 교차 자식을 만드는 데 사용하는 함수입니다. 내장 교차 함수 이름 또는 함수 핸들로 지정합니다. Crossover Options 항목을 참조하십시오. |
|
| 교차 함수가 만들어 내는 다음 세대에서 엘리트 자식을 포함하지 않는 모집단의 소수부입니다. | 양의 스칼라 | |
| 표시 수준입니다. |
|
| 개체의 거리 측정을 계산하는 함수입니다. 내장 거리 측정 함수 이름 또는 함수 핸들로 지정합니다. 값은 결정 변수나 설계 공간(유전자형) 또는 함수 공간(표현형)에 적용됩니다. 디폴트 값 options 구조체의 경우에는 함수 이름이 아닌 함수 핸들을 사용하십시오. |
|
| NM 현재 세대에서 다음 세대까지 생존이 보장되는 개체 수를 지정하는 양의 정수입니다. | 양의 정수 | |
| NM 적합도 함수가 | 스칼라 | |
| 적합도 함수의 값을 스케일링하는 함수입니다. 내장 스케일링 함수 이름 또는 함수 핸들로 지정합니다. |
|
FunctionTolerance |
options 구조체의 경우 | 양의 스칼라 | |
| I* 또는 하이브리드 함수와 해당 옵션을 지정하는 셀형 배열입니다. ga Hybrid Function 항목을 참조하십시오.
문제에 정수 제약 조건이 있는 경우 하이브리드 함수를 사용할 수 없습니다. When to Use a Hybrid Function 항목을 참조하십시오. | 함수 이름 또는 함수 핸들 | 또는 1×2 셀형 배열 | |
InitialPenalty | NM I* 벌점 파라미터의 초기값 | 양의 스칼라 | |
| 유전 알고리즘을 시드하는 데 사용되는 초기 모집단입니다. 최대 options 구조체의 경우 | 행렬 | |
| 초기 모집단의 개체 범위를 지정하는 행렬 또는 벡터입니다. options 구조체의 경우 | 벡터 행렬 | 제한 조건이 없는 성분의 경우 |
| 적합도를 결정하는 데 사용되는 초기 점수입니다. 최대 options 구조체의 경우 | 단일 목적 함수의 경우 열 벡터 | 다중 목적 함수의 경우 행렬 | |
| 알고리즘이 중지되기 전까지의 최대 반복 횟수입니다. options 구조체의 경우 | 양의 정수 | |
|
options 구조체의 경우 | 양의 정수 | |
| NM options 구조체의 경우 | 양의 스칼라 |
|
options 구조체의 경우 | 양의 스칼라 | |
MigrationDirection | 마이그레이션 방향입니다. Migration Options 항목을 참조하십시오. |
|
MigrationFraction | 다른 하위 모집단으로 마이그레이션하는 각 하위 모집단의 개체 비율을 지정하는, 0부터 1까지의 스칼라입니다. Migration Options 항목을 참조하십시오. | 스칼라 | |
MigrationInterval | 하위 모집단 간의 개체 마이그레이션 사이에 발생하는 세대 수를 지정하는 양의 정수입니다. Migration Options 항목을 참조하십시오. | 양의 정수 | |
| 변이 자식을 생성하는 함수입니다. 내장 변이 함수 이름 또는 함수 핸들로 지정합니다. Mutation Options 항목을 참조하십시오. |
|
| 비선형 제약 조건 알고리즘입니다. Nonlinear Constraint Solver Algorithms for Genetic Algorithm 항목을 참조하십시오. options 구조체의 경우 |
|
| 각 반복에서 options 구조체의 경우 | 함수 핸들 또는 함수 핸들로 구성된 셀형 배열 | |
| 솔버가 더 높은 경계에서 개체를 선택하는 동안 첫 번째 파레토 경계에 유지할 개체의 비율을 지정하는, 0에서 1까지의 스칼라입니다. | 스칼라 | |
PenaltyFactor | NM I* 벌점 업데이트 파라미터입니다. | 양의 스칼라 | |
| 알고리즘으로 계산된 데이터를 플로팅하는 함수입니다. 내장 플롯 함수 이름, 함수 핸들 또는 내장 함수 이름이나 함수 핸들로 구성된 셀형 배열로 지정합니다. Plot Options 항목을 참조하십시오. options 구조체의 경우 |
|
PlotInterval | 플롯 함수에 대한 연속 호출 사이의 세대 수를 지정하는 양의 정수입니다. | 양의 정수 | |
| 모집단 크기입니다. | 양의 정수 | |
| 모집단의 데이터형입니다. 혼합 정수 문제의 경우 |
|
| 교차 및 변이 자식의 부모를 선택하는 함수입니다. 내장 선택 함수 이름 또는 함수 핸들로 지정합니다.
|
|
StallTest | NM 테스트 유형을 중지합니다. |
|
UseParallel | 적합도와 비선형 제약 조건 함수를 병렬로 계산합니다. Vectorize and Parallel Options (User Function Evaluation) 항목과 How to Use Parallel Processing in Global Optimization Toolbox 항목을 참조하십시오. |
|
| 함수를 벡터화할지 여부를 지정합니다. Vectorize and Parallel Options (User Function Evaluation) 항목과 Vectorize the Fitness Function 항목을 참조하십시오. options 구조체의 경우 값 |
|
예: optimoptions('ga','PlotFcn',@gaplotbestf)
intcon
— 정수 변수
양의 정수로 구성된 벡터
정수 변수로, 1
에서 nvars
까지의 값을 취하는 양의 정수로 구성된 벡터로 지정됩니다. intcon
의 각 값은 정수 값인 x
성분을 나타냅니다.
참고
intcon
이 비어 있지 않은 경우 nonlcon
은 ceq
에 대해 빈 값을 반환해야 합니다. 정수 계획법에 대한 자세한 내용은 Mixed Integer ga Optimization 항목을 참조하십시오.
예: 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
— 해(Solution)
실수형 벡터
해로, 실수형 벡터로 반환됩니다. 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
의 출력값을 재현할 수 있습니다. Reproduce Results 항목을 참조하십시오.generations
— 계산된 세대 수입니다.funccount
— 적합도 함수의 평가 횟수입니다.message
- 알고리즘이 종료된 이유입니다.maxconstraint
— 최대 제약 조건 위반입니다(있는 경우).hybridflag
— 하이브리드 함수의 종료 플래그입니다.HybridFcn
options
와 관련이 있습니다.gamultiobj
에는 적용되지 않습니다.
population
— 최종 모집단
행렬
최종 모집단으로, PopulationSize
×nvars
행렬로 반환됩니다. population
의 행이 개체입니다.
scores
— 최종 점수
열 벡터
최종 점수로, 열 벡터로 반환됩니다.
정수 문제가 아닌 경우, 최종 점수는
population
행의 적합도 함수 값입니다.정수 문제의 경우, 최종 점수는 모집단 구성원의 벌점 적합도 값입니다. Integer ga Algorithm 항목을 참조하십시오.
세부 정보
상보성 측정값
확장 라그랑주 비선형 제약 조건 솔버에서 상보성 측정값은 요소가 ciλi인 벡터의 노름입니다. 여기서 ci은 비선형 부등식 제약 조건 위반 값이며 λi는 이에 대응하는 라그랑주 승수입니다. Augmented Lagrangian Genetic Algorithm 항목을 참조하십시오.
팁
ga
에서 호출할 수 있는 독립 변수에 추가 파라미터를 사용하여 함수를 작성하려면 추가 파라미터 전달하기 항목을 참조하십시오.모집단 유형
Double Vector
(double형 벡터, 디폴트 값)를 사용하는 문제의 경우ga
는 입력 유형이complex
인 함수를 허용하지 않습니다. 복소수 데이터가 포함된 문제를 풀려면 실수부와 허수부를 분리하여 실수 벡터를 허용하도록 함수를 작성하십시오.
알고리즘
유전 알고리즘에 대한 설명은 How the Genetic Algorithm Works 항목을 참조하십시오.
정수 계획법 알고리즘에 대한 설명은 Integer ga Algorithm 항목을 참조하십시오.
제약 조건 유전 알고리즘에 대한 설명은 Nonlinear Constraint Solver Algorithms for Genetic Algorithm 항목을 참조하십시오.
대체 기능
앱
최적화 라이브 편집기 작업은 ga
에 대한 시각적 인터페이스를 제공합니다.
참고 문헌
[1] Goldberg, David E., Genetic Algorithms in Search, Optimization & Machine Learning, Addison-Wesley, 1989.
[2] A. R. Conn, N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Algorithm for Optimization with General Constraints and Simple Bounds”, SIAM Journal on Numerical Analysis, Volume 28, Number 2, pages 545–572, 1991.
[3] A. R. Conn, N. I. M. Gould, and Ph. L. Toint. “A Globally Convergent Augmented Lagrangian Barrier Algorithm for Optimization with General Inequality Constraints and Simple Bounds”, Mathematics of Computation, Volume 66, Number 217, pages 261–288, 1997.
확장 기능
자동 병렬 지원
Parallel Computing Toolbox™를 사용해 자동 병렬 계산을 실행하여 코드 실행 속도를 높일 수 있습니다.
병렬로 실행하려면 'UseParallel'
옵션을 true
로 설정하십시오.
options = optimoptions('
solvername
','UseParallel',true)
자세한 내용은 How to Use Parallel Processing in Global Optimization Toolbox 항목을 참조하십시오.
버전 내역
R2006a 이전에 개발됨R2019b: 적합도 함수를 더 적게 평가하는 ga
적합도 함수가 결정적인 경우 ga
는 엘리트(현재 최고) 개체에 대해 적합도 함수를 재평가하지 않습니다. 새 state.EvalElites
필드에 액세스하여 사용자 지정 출력 함수 또는 사용자 지정 플롯 함수에서 수정하면 이 동작을 제어할 수 있습니다. 마찬가지로 초기 모집단에 중복 구성원이 있는 경우 ga
는 각 고유 구성원을 한 번만 평가합니다. 새 state.HaveDuplicates
필드에 액세스해서 수정하여 사용자 지정 출력 함수 또는 사용자 지정 플롯 함수에서 이 동작을 제어할 수 있습니다. 자세한 내용은 Custom Output Function for Genetic Algorithm 항목 또는 사용자 지정 플롯 함수를 참조하십시오.
2개의 새 필드에 대한 자세한 내용은 The State Structure 항목을 참조하십시오.
MATLAB 명령
다음 MATLAB 명령에 해당하는 링크를 클릭했습니다.
명령을 실행하려면 MATLAB 명령 창에 입력하십시오. 웹 브라우저는 MATLAB 명령을 지원하지 않습니다.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list:
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)