Main Content

이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.

ga

유전 알고리즘을 사용하여 함수의 최솟값 구하기

설명

예제

x = ga(fun,nvars)는 목적 함수 fun에 대한 제약 조건 없는 국소 최솟값 x를 구합니다. nvarsfun의 차원(설계 변수 개수)입니다.

참고

추가 파라미터 전달하기에는 필요한 경우 추가 파라미터를 목적 함수와 비선형 제약 조건 함수에 전달하는 방법을 설명되어 있습니다.

예제

x = ga(fun,nvars,A,b)는 선형 부등식 A*xb를 조건으로 적용하여 fun에 대한 국소 최솟값 x를 구합니다. gax가 전치된 것처럼(A*x') 행렬 곱 A*x를 계산합니다.

예제

x = ga(fun,nvars,A,b,Aeq,beq)는 선형 부등식 Aeq*x = beqA*xb를 조건으로 적용하여 fun에 대한 국소 최솟값 x를 구합니다. (선형 부등식이 존재하지 않을 경우 A=[]b=[]을 설정합니다.) gax가 전치된 것처럼(Aeq*x') 행렬 곱 Aeq*x를 계산합니다.

예제

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub)는 해가 범위 lb x ub 내에 있도록 설계 변수 x에 대한 하한 및 상한 집합을 정의합니다. (선형 부등식이 존재하지 않을 경우 Aeq=[]beq=[]을 설정합니다.)

예제

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon)nonlcon에 정의된 제약 조건에 최소화를 적용합니다. 함수 nonlconx를 받고 각각 비선형 부등식과 등식을 나타내는 벡터 CCeq를 반환합니다. gaC(x) 0Ceq(x) = 0이 되도록 fun을 최소화합니다. (범위가 존재하지 않을 경우 lb=[]ub=[]을 설정하십시오.)

예제

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,options)options의 값으로 대체된 디폴트 최적화 파라미터를 사용하여 최소화합니다. (비선형 제약 조건이 존재하지 않을 경우 nonlcon=[]을 설정합니다.) optimoptions를 사용하여 options를 만듭니다.

예제

x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon) 또는 x = ga(fun,nvars,A,b,Aeq,beq,lb,ub,nonlcon,intcon,options)intcon에 나열된 변수가 정수 값을 받도록 요구합니다.

참고

정수 제약 조건이 있을 때 ga는 비선형 등식 제약 조건을 받지 않고 비선형 부등식 제약 조건만 받습니다.

x = ga(problem)problem에 설명되어 있는 구조체인 problem의 최솟값을 구합니다.

예제

[x,fval] = ga(___)는 이전의 입력 인수에 대해서도 x에서의 적합도 함수 값인 fval을 반환합니다.

예제

[x,fval,exitflag,output] = ga(___)는 알고리즘이 종료된 이유를 식별하는 정수인 exitflag와 각 세대의 출력값 및 알고리즘 성능에 대한 기타 정보를 포함하는 구조체인 output을 반환합니다.

예제

[x,fval,exitflag,output,population,scores] = ga(___)는 행이 최종 모집단을 나타내는 행렬 population과, 최종 모집단의 점수를 나타내는 벡터 scores도 반환합니다.

예제

모두 축소

이 예제를 실행할 때 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)')

Figure contains an axes object. The axes object with title ps _ example(x), xlabel x(1), ylabel x(2) contains an object of type surface.

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) >= 1x(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) >= 1x(2) == 5 + x(1)에서 ps_example 함수를 최소화합니다. 이 예제를 실행할 때 이 함수가 포함됩니다.

먼저 2개의 제약 조건을 행렬 형식 A*x <= bAeq*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) >= 1x(2) == 5 + x(1)에서 ps_example 함수를 최소화합니다. 이 예제를 실행할 때 ps_example 함수가 포함됩니다. 또한 범위 1 <= x(1) <= 6-3 <= x(2) <= 8을 설정합니다.

먼저 2개의 선형 제약 조건을 행렬 형식 A*x <= bAeq*x = beq로 변환합니다. 즉, 표현식의 왼쪽에서 x 변수를 구하고 부등식을 작거나 같다는 형식으로 만듭니다.

-x(1) -x(2) <= -1

-x(1) + x(2) == 5

A = [-1 -1];
b = -1;
Aeq = [-1 1];
beq = 5;

범위 lbub를 설정합니다.

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

유전 알고리즘을 사용하여 영역 2x12+x223(x1+1)2=(x2/2)4에서 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) >= 1x(2) == 5 + x(1)에서 ps_example 함수를 최소화합니다. 이 예제를 실행할 때 ps_example 함수가 포함됩니다.

먼저 2개의 제약 조건을 행렬 형식 A*x <= bAeq*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.

Figure Genetic Algorithm contains an axes object. The axes object with title Best: 4 Mean: 4, xlabel Generation, ylabel Fitness value contains 2 objects of type scatter. These objects represent Best fitness, Mean fitness.

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이 최솟값을 탐색하는 방법을 이해하려면 exitflagoutput 결과를 가져옵니다. 또한, 솔버가 진행됨에 따라 관찰된 목적 함수 최솟값을 플로팅합니다.

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)

Figure Genetic Algorithm contains an axes object. The axes object with title Best: -1.83445 Mean: 880470, xlabel Generation, ylabel Penalty value contains 2 objects of type scatter. These objects represent Best penalty value, Mean penalty value.

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

입력 인수

모두 축소

목적 함수로, 함수 핸들 또는 함수 이름으로 지정됩니다. 길이가 nvars인 행 벡터를 받고 스칼라 값을 반환하는 목적 함수를 작성합니다.

'UseVectorized' 옵션이 true인 경우 pop×nvars 행렬을 받도록 fun을 작성합니다. 여기서 pop는 현재 모집단 크기입니다. 이 경우 fun은 적합도 함수 값을 포함하는 pop과 동일한 길이의 벡터를 반환합니다. ga 함수는 벡터화된 계산에서도 단일 구성원 모집단을 전달할 수 있으므로 funpop에 대해 특정 크기를 가정하지 않도록 합니다.

예: fun = @(x)(x-[4,2]).^2

데이터형: char | function_handle | string

변수 개수로, 양의 정수로 지정됩니다. 이 솔버는 길이가 nvars인 행 벡터를 fun으로 전달합니다.

예: 4

데이터형: double

선형 부등식 제약 조건으로, 실수 행렬로 지정됩니다. AM×nvars 행렬입니다. 여기서 M은 부등식 개수입니다.

A는 다음과 같이 M개의 선형 부등식을 인코딩합니다.

A*x <= b,

여기서 xnvars개의 변수 x(:)으로 구성된 열 벡터이고, bM개의 요소를 갖는 열 벡터입니다.

예를 들어 다음을 지정하려는 경우,

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

선형 부등식 제약 조건으로, 실수 벡터로 지정됩니다. bA 행렬과 관련된, 요소를 M개 가진 벡터입니다. b를 행 벡터로 전달하면 솔버는 내부적으로 b를 열 벡터 b(:)으로 변환합니다.

b는 다음과 같이 M개의 선형 부등식을 인코딩합니다.

A*x <= b,

여기서 xN개의 변수 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

선형 등식 제약 조건으로, 실수 행렬로 지정됩니다. AeqMe×nvars 행렬입니다. 여기서 Me는 등식 개수입니다.

Aeq는 다음과 같이 Me개의 선형 등식을 인코딩합니다.

Aeq*x = beq,

여기서 xN개의 변수 x(:)으로 구성된 열 벡터이고, beqMe개의 요소를 갖는 열 벡터입니다.

예를 들어 다음을 지정하려는 경우,

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

선형 등식 제약 조건으로, 실수 벡터로 지정됩니다. beqAeq 행렬과 관련된, 요소를 Me개 가진 벡터입니다. beq를 행 벡터로 전달하면 솔버는 내부적으로 beq를 열 벡터 beq(:)으로 변환합니다.

beq는 다음과 같이 Me개의 선형 등식을 인코딩합니다.

Aeq*x = beq,

여기서 xN개의 변수 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

하한으로, double형으로 구성된 실수형 벡터 또는 배열로 지정됩니다. lblb x ub에서 요소별 하한을 나타냅니다.

내부적으로 ga는 배열 lb를 벡터 lb(:)으로 변환합니다.

예: lb = [0;-Inf;4]x(1) ≥ 0, x(3) ≥ 4를 의미합니다.

데이터형: double

상한으로, double형으로 구성된 실수형 벡터 또는 배열로 지정됩니다. ublb x ub에서 요소별 상한을 나타냅니다.

내부적으로 ga는 배열 ub를 벡터 ub(:)으로 변환합니다.

예: ub = [Inf;4;10]x(2) ≤ 4, x(3) ≤ 10을 의미합니다.

데이터형: double

비선형 제약 조건으로, 함수 핸들 또는 함수 이름으로 지정됩니다. 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)의 두 번째 출력값은 빈 요소([])여야 합니다.

ganonlcon을 사용하는 방법에 대한 자세한 내용은 Nonlinear Constraint Solver Algorithms for Genetic Algorithm 항목을 참조하십시오.

데이터형: char | function_handle | string

최적화 옵션으로, optimoptions의 출력값 또는 구조체로 지정됩니다.

optimoptions기울임꼴로 나열된 옵션을 숨깁니다. Options that optimoptions Hides 항목을 참조하십시오.

  • {}의 값은 디폴트 값을 나타냅니다.

  • {}*은 선형 제약 조건이 있을 때의 디폴트 값을 나타내며, MutationFcn에 대해서도 범위가 있을 경우 디폴트 값을 나타냅니다.

  • I*은 정수 제약 조건에 대한 디폴트 값을 나타내거나 정수 제약 조건에 대한 특수 고려 사항을 나타냅니다.

  • NMgamultiobj에 옵션이 적용되지 않음을 나타냅니다.

gagamultiobj에 대한 옵션

옵션설명
ConstraintTolerance

비선형 제약 조건과 관련하여 실현 가능성을 결정합니다. 또한 max(sqrt(eps),ConstraintTolerance)는 선형 제약 조건과 관련하여 실현 가능성을 결정합니다.

options 구조체의 경우 TolCon을 사용합니다.

양의 스칼라 | {1e-3}

CreationFcn

초기 모집단을 만드는 함수입니다. 내장 생성 함수 이름 또는 함수 핸들로 지정합니다. Population Options 항목을 참조하십시오.

{'gacreationuniform'} | {'gacreationlinearfeasible'}* | 'gacreationnonlinearfeasible' | {'gacreationuniformint'}I*(ga의 경우) | {'gacreationsobol'}I*(gamultiobj의 경우) | 사용자 지정 생성 함수

CrossoverFcn

알고리즘이 교차 자식을 만드는 데 사용하는 함수입니다. 내장 교차 함수 이름 또는 함수 핸들로 지정합니다. Crossover Options 항목을 참조하십시오.

{'crossoverscattered'}(ga의 경우), {'crossoverintermediate'}*(gamultiobj의 경우) | {'crossoverlaplace'}I* | 'crossoverheuristic' | 'crossoversinglepoint' | 'crossovertwopoint' | 'crossoverarithmetic' | 사용자 지정 교차 함수

CrossoverFraction

교차 함수가 만들어 내는 다음 세대에서 엘리트 자식을 포함하지 않는 모집단의 소수부입니다.

양의 스칼라 | {0.8}

Display

표시 수준입니다.

'off' | 'iter' | 'diagnose' | {'final'}

DistanceMeasureFcn

개체의 거리 측정을 계산하는 함수입니다. 내장 거리 측정 함수 이름 또는 함수 핸들로 지정합니다. 값은 결정 변수나 설계 공간(유전자형) 또는 함수 공간(표현형)에 적용됩니다. 디폴트 값 'distancecrowding'은 함수 공간(표현형)에 있습니다. gamultiobj만 해당됩니다. Multiobjective Options 항목을 참조하십시오.

options 구조체의 경우에는 함수 이름이 아닌 함수 핸들을 사용하십시오.

{'distancecrowding'}{@distancecrowding,'phenotype'}과 동일한 의미 | {@distancecrowding,'genotype'} | 사용자 지정 거리 함수

EliteCount

NM 현재 세대에서 다음 세대까지 생존이 보장되는 개체 수를 지정하는 양의 정수입니다. gamultiobj에는 사용되지 않습니다.

양의 정수 | {ceil(0.05*PopulationSize)} | 혼합 정수 문제의 경우 {0.05*(default PopulationSize)}

FitnessLimit

NM 적합도 함수가 FitnessLimit의 값에 도달하면 알고리즘이 중지됩니다.

스칼라 | {-Inf}

FitnessScalingFcn

적합도 함수의 값을 스케일링하는 함수입니다. 내장 스케일링 함수 이름 또는 함수 핸들로 지정합니다. gamultiobj에는 사용할 수 없는 옵션입니다.

{'fitscalingrank'} | 'fitscalingshiftlinear' | 'fitscalingprop' | 'fitscalingtop' | 사용자 지정 적합도 스케일링 함수

FunctionTolerance

MaxStallGenerations개의 세대 동안 최대 적합도 함수 값의 평균 상대 변화가 FunctionTolerance보다 작거나 같으면 알고리즘이 중지됩니다. StallTest'geometricWeighted'인 경우 가중 평균 상대 변화가 FunctionTolerance보다 작거나 같으면 알고리즘이 중지됩니다.

gamultiobj의 경우, options.MaxStallGenerations개의 세대 동안 산포값의 상대적 변화의 기하 평균이 options.FunctionTolerance보다 작고, 최종 산포값이 지난 options.MaxStallGenerations개의 세대 동안의 평균 산포 값보다 작을 때 알고리즘이 중지됩니다. gamultiobj Algorithm 항목을 참조하십시오.

options 구조체의 경우 TolFun을 사용합니다.

양의 스칼라 | ga의 경우 {1e-6}, gamultiobj의 경우 {1e-4}

HybridFcn

I* ga 종료 이후 최적화를 계속하는 함수입니다. 함수 이름 또는 함수 핸들로 지정합니다.

또는 하이브리드 함수와 해당 옵션을 지정하는 셀형 배열입니다. ga Hybrid Function 항목을 참조하십시오.

gamultiobj의 경우 유일한 하이브리드 함수는 @fgoalattain입니다. gamultiobj Hybrid Function 항목을 참조하십시오.

문제에 정수 제약 조건이 있는 경우 하이브리드 함수를 사용할 수 없습니다.

When to Use a Hybrid Function 항목을 참조하십시오.

함수 이름 또는 함수 핸들 | 'fminsearch' | 'patternsearch' | 'fminunc' | 'fmincon' | {[]}

또는

1×2 셀형 배열 | {@solver, hybridoptions}, 여기서 solver = fminsearch, patternsearch, fminunc, 또는 fmincon {[]}

InitialPenalty

NM I* 벌점 파라미터의 초기값

양의 스칼라 | {10}

InitialPopulationMatrix

유전 알고리즘을 시드하는 데 사용되는 초기 모집단입니다. 최대 PopulationSize개의 행과 N개의 열을 가지며, 여기서 N은 변수의 수입니다. 부분 모집단을 전달할 수 있습니다. 즉, 행 수가 PopulationSize개 미만인 모집단을 전달할 수 있습니다. 이 경우 유전 알고리즘은 CreationFcn을 사용하여 나머지 모집단 구성원을 생성합니다. Population Options 항목을 참조하십시오.

options 구조체의 경우 InitialPopulation을 사용합니다.

행렬 | {[]}

InitialPopulationRange

초기 모집단의 개체 범위를 지정하는 행렬 또는 벡터입니다. gacreationuniform 생성 함수에 적용됩니다. ga는 디폴트 초기 범위가 제한된 범위와 일치하도록 이동하고 스케일링합니다.

options 구조체의 경우 PopInitRange를 사용합니다.

벡터 행렬 | 제한 조건이 없는 성분의 경우 {[-10;10]}, 정수 제약 문제의 제한 조건이 없는 성분의 경우 {[-1e4+1;1e4+1]}, 디폴트 범위가 단측 범위와 일치하도록 수정된 제한 조건이 있는 성분의 경우 {[lb;ub]}

InitialScoresMatrix

적합도를 결정하는 데 사용되는 초기 점수입니다. 최대 PopulationSize개의 행과 Nf개의 열이 있습니다. 여기서 Nf은 적합도 함수 개수입니다(ga의 경우 1, gamultiobj의 경우 1보다 큽니다). 부분 점수 행렬을 전달할 수 있습니다. 즉, 행 수가 PopulationSize개 미만인 행렬을 의미합니다. 이 경우 솔버는 적합도 함수를 평가하면서 점수를 채웁니다.

options 구조체의 경우 InitialScores를 사용합니다.

단일 목적 함수의 경우 열 벡터 | 다중 목적 함수의 경우 행렬 | {[]}

MaxGenerations

알고리즘이 중지되기 전까지의 최대 반복 횟수입니다.

options 구조체의 경우 Generations를 사용하십시오.

양의 정수 |{100*numberOfVariables}(ga의 경우), {200*numberOfVariables}(gamultiobj의 경우)

MaxStallGenerations

MaxStallGenerations개의 세대 동안 최대 적합도 함수 값의 평균 상대 변화가 FunctionTolerance보다 작거나 같으면 알고리즘이 중지됩니다. StallTest'geometricWeighted'인 경우 가중 평균 상대 변화가 FunctionTolerance보다 작거나 같으면 알고리즘이 중지됩니다.

gamultiobj의 경우, options.MaxStallGenerations개의 세대 동안 산포값의 상대적 변화의 기하 평균이 options.FunctionTolerance보다 작고, 최종 산포값이 지난 options.MaxStallGenerations개의 세대 동안의 평균 산포 값보다 작을 때 알고리즘이 중지됩니다. gamultiobj Algorithm 항목을 참조하십시오.

options 구조체의 경우 StallGenLimit을 사용합니다.

양의 정수 | {50}(ga의 경우), {100}(gamultiobj의 경우)

MaxStallTime

NM tictoc에서 측정한 결과를 기준으로 MaxStallTime초 동안 목적 함수가 개선되지 않으면 알고리즘이 중지됩니다.

options 구조체의 경우 StallTimeLimit을 사용합니다.

양의 스칼라 | {Inf}

MaxTime

tictoc에서 측정한 결과를 기준으로 MaxTime초 동안 실행된 후 알고리즘이 중지됩니다. 이 제한은 각 반복 후에 적용되므로 반복에 상당한 시간이 걸릴 경우 ga가 제한을 초과할 수 있습니다.

options 구조체의 경우 TimeLimit을 사용합니다.

양의 스칼라 | {Inf}

MigrationDirection

마이그레이션 방향입니다. Migration Options 항목을 참조하십시오.

'both' | {'forward'}

MigrationFraction

다른 하위 모집단으로 마이그레이션하는 각 하위 모집단의 개체 비율을 지정하는, 0부터 1까지의 스칼라입니다. Migration Options 항목을 참조하십시오.

스칼라 | {0.2}

MigrationInterval

하위 모집단 간의 개체 마이그레이션 사이에 발생하는 세대 수를 지정하는 양의 정수입니다. Migration Options 항목을 참조하십시오.

양의 정수 | {20}

MutationFcn

변이 자식을 생성하는 함수입니다. 내장 변이 함수 이름 또는 함수 핸들로 지정합니다. Mutation Options 항목을 참조하십시오.

{'mutationgaussian'}(제약 조건이 없는 ga의 경우) | {'mutationadaptfeasible'}*(제약 조건이 있는 gagamultiobj의 경우) | {'mutationpower'}I* | 'mutationpositivebasis' | 'mutationuniform' | 사용자 지정 변이 함수

NonlinearConstraintAlgorithm

비선형 제약 조건 알고리즘입니다. Nonlinear Constraint Solver Algorithms for Genetic Algorithm 항목을 참조하십시오. gamultiobj에 대해 옵션을 변경할 수 없습니다.

options 구조체의 경우 NonlinConAlgorithm을 사용합니다.

{'auglag'}(ga의 경우), {'penalty'}(gamultiobj의 경우)

OutputFcn

각 반복에서 ga가 호출하는 함수입니다. 함수 핸들 또는 함수 핸들로 구성된 셀형 배열로 지정합니다. Output Function Options 항목을 참조하십시오.

options 구조체의 경우 OutputFcns를 사용합니다.

함수 핸들 또는 함수 핸들로 구성된 셀형 배열 | {[]}

ParetoFraction

솔버가 더 높은 경계에서 개체를 선택하는 동안 첫 번째 파레토 경계에 유지할 개체의 비율을 지정하는, 0에서 1까지의 스칼라입니다. gamultiobj만 해당됩니다. Multiobjective Options 항목을 참조하십시오.

스칼라 | {0.35}

PenaltyFactor

NM I* 벌점 업데이트 파라미터입니다.

양의 스칼라 | {100}

PlotFcn

알고리즘으로 계산된 데이터를 플로팅하는 함수입니다. 내장 플롯 함수 이름, 함수 핸들 또는 내장 함수 이름이나 함수 핸들로 구성된 셀형 배열로 지정합니다. Plot Options 항목을 참조하십시오.

options 구조체의 경우 PlotFcns를 사용합니다.

ga 또는 gamultiobj: {[]} | 'gaplotdistance' | 'gaplotgenealogy' | 'gaplotselection' | 'gaplotscorediversity' |'gaplotscores' | 'gaplotstopping' | 'gaplotmaxconstr' | 사용자 지정 플롯 함수

ga만 해당: 'gaplotbestf' | 'gaplotbestindiv' | 'gaplotexpectation' | 'gaplotrange'

gamultiobj만 해당: 'gaplotpareto' | 'gaplotparetodistance' | 'gaplotrankhist' | 'gaplotspread'

PlotInterval

플롯 함수에 대한 연속 호출 사이의 세대 수를 지정하는 양의 정수입니다.

양의 정수 | {1}

PopulationSize

모집단 크기입니다.

양의 정수 | numberOfVariables <= 5의 경우 {50}, 그 외의 경우 {200} | {min(max(10*nvars,40),100)}(혼합 정수 문제의 경우)

PopulationType

모집단의 데이터형입니다. 혼합 정수 문제의 경우 'doubleVector'여야 합니다.

'bitstring' | 'custom' | {'doubleVector'}

PopulationType'bitString' 또는 'custom'으로 설정된 경우 ga는 모든 제약 조건을 무시합니다. Population Options 항목을 참조하십시오.

SelectionFcn

교차 및 변이 자식의 부모를 선택하는 함수입니다. 내장 선택 함수 이름 또는 함수 핸들로 지정합니다.

gamultiobj'selectiontournament'만 사용합니다.

{'selectionstochunif'}(ga의 경우), {'selectiontournament'}(gamultiobj의 경우) | 'selectionremainder' | 'selectionuniform' | 'selectionroulette' | 사용자 지정 선택 함수

StallTest

NM 테스트 유형을 중지합니다.

'geometricWeighted' | {'averageChange'}

UseParallel

적합도와 비선형 제약 조건 함수를 병렬로 계산합니다. Vectorize and Parallel Options (User Function Evaluation) 항목과 How to Use Parallel Processing in Global Optimization Toolbox 항목을 참조하십시오.

true | {false}

UseVectorized

함수를 벡터화할지 여부를 지정합니다. Vectorize and Parallel Options (User Function Evaluation) 항목과 Vectorize the Fitness Function 항목을 참조하십시오.

options 구조체의 경우 값 'on' 또는 'off'와 함께 Vectorized를 사용합니다.

true | {false}

예: optimoptions('ga','PlotFcn',@gaplotbestf)

정수 변수로, 1에서 nvars까지의 값을 취하는 양의 정수로 구성된 벡터로 지정됩니다. intcon의 각 값은 정수 값인 x 성분을 나타냅니다.

참고

intcon이 비어 있지 않은 경우 nonlconceq에 대해 빈 값을 반환해야 합니다. 정수 계획법에 대한 자세한 내용은 Mixed Integer ga Optimization 항목을 참조하십시오.

예: x의 짝수 요소를 정수 값으로 지정하려면 intcon2:2:nvars로 설정합니다

데이터형: double

문제 설명으로, 다음 필드를 가진 구조체로 지정됩니다.

fitnessfcn

적합도 함수

nvars

설계 변수 개수

Aineq

선형 부등식 제약 조건에 대한 A 행렬

Bineq

선형 부등식 제약 조건에 대한 b 벡터

Aeq

선형 등식 제약 조건에 대한 Aeq 행렬

Beq

선형 등식 제약 조건에 대한 beq벡터

lb

x의 하한

ub

x의 상한

nonlcon

비선형 제약 조건 함수

intcon정수 변수로 구성된 인덱스
rngstate

난수 생성기의 상태를 재설정하는 필드

solver

'ga'

options

optimoptions로 만든 옵션 또는 options 구조체

필드 fitnessfcn, nvars, options를 지정해야 합니다. ga의 경우 나머지는 선택 사항입니다.

데이터형: struct

출력 인수

모두 축소

해로, 실수형 벡터로 반환됩니다. xga가 반복하는 동안 찾은 최적의 지점입니다.

해에서 계산된 목적 함수 값으로, 실수로 반환됩니다. 일반적으로 fval = fun(x)입니다.

ga가 중지된 이유로, 정수로 반환됩니다.

종료 플래그의미
1

비선형 제약 조건 없음MaxStallGenerations 생성에 대한 적합도 함수 값의 평균 누적 변화량이 FunctionTolerance보다 작고 제약 조건 위반 값이 ConstraintTolerance보다 작습니다.

비선형 제약 조건 있음 — 상보성 측정값의 크기(상보성 측정값 참조)는 sqrt(ConstraintTolerance)보다 작으며, 하위 문제는 FunctionTolerance보다 작은 허용오차를 사용하여 풀리고 제약 조건 위반 값은 ConstraintTolerance보다 작습니다.

3

적합도 함수의 값이 MaxStallGenerations 생성에서 변경되지 않았고 제약 조건 위반 값이 ConstraintTolerance보다 작습니다.

4

기계 정밀도보다 작은 스텝 크기이며 제약 조건 위반은 ConstraintTolerance보다 작습니다.

5

최소 적합도 제한 FitnessLimit에 도달했고 제약 조건 위반 값이 ConstraintTolerance보다 작습니다.

0

최대 생성 횟수인 MaxGenerations를 초과했습니다.

-1

출력 함수나 플롯 함수에 의해 최적화가 종료되었습니다.

-2

실현가능점을 찾지 못했습니다.

-4

정체 시간 제한인 MaxStallTime을 초과했습니다.

-5

시간 제한인 MaxTime을 초과했습니다.

정수 제약 조건이 있는 경우 ga는 중지 기준에 적합도 값 대신 벌점 적합도 값을 사용합니다.

최적화 과정에 대한 정보로, 다음 필드를 가진 구조체로 반환됩니다.

  • problemtype — 문제 유형으로 다음 중 하나입니다.

    • 'unconstrained'

    • 'boundconstraints'

    • 'linearconstraints'

    • 'nonlinearconstr'

    • 'integerconstraints'

  • rngstate — 알고리즘이 시작되기 직전 MATLAB 난수 생성기의 상태입니다. rngstate의 값을 사용하여 ga의 출력값을 재현할 수 있습니다. Reproduce Results 항목을 참조하십시오.

  • generations — 계산된 세대 수입니다.

  • funccount — 적합도 함수의 평가 횟수입니다.

  • message - 알고리즘이 종료된 이유입니다.

  • maxconstraint — 최대 제약 조건 위반입니다(있는 경우).

  • hybridflag — 하이브리드 함수의 종료 플래그입니다. HybridFcn options와 관련이 있습니다. gamultiobj에는 적용되지 않습니다.

최종 모집단으로, PopulationSize×nvars 행렬로 반환됩니다. population의 행이 개체입니다.

최종 점수로, 열 벡터로 반환됩니다.

  • 정수 문제가 아닌 경우, 최종 점수는 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.

확장 기능

버전 내역

R2006a 이전에 개발됨

모두 확장