Search

[MATLAB] Genetic Algorithm: ga()

Category
Study
Kewords
MATLAB
Function
2 more properties
Table of Contents

1. Function Overview

1.1 개 요

MATLAB의 ga 함수는 유전 알고리즘(Genetic Algorithm, GA)을 사용하여 비선형 및 복잡한 최적화 문제를 해결하기 위한 도구.
이 함수는 전역 최적값을 찾는 데 적합하며, 연속형 변수뿐 아니라 정수형 변수 및 다양한 제약 조건을 가진 문제도 해결할 수 있음.
주요 기능:
목적 함수 최적화: 비선형, 비미분 가능, 다중 극값을 가진 함수에 적합.
제약 조건 지원: 선형/비선형 부등식 및 등식 제약, 변수 경계, 정수 제약 가능.
옵션 설정: optimoptions를 통해 교차율, 돌연변이율, 세대 수 등의 설정 가능.
다양한 출력: 최적 변수, 목적 함수 값, 최적화 과정 정보, 최종 개체군 등 제공.

1.2 기본 구문

x = ga(fun, nvars) x = ga(fun, nvars, A, b, Aeq, beq, lb, ub, nonlcon, intcon, options)
MATLAB
복사
fun: 최적화할 목적 함수 핸들
nvars: 설계 변수의 개수
A, b: 선형 부등식 제약 (A*x ≤ b)
Aeq, beq: 선형 등식 제약 (Aeq*x = beq)
lb, ub: 변수의 하한 및 상한
nonlcon: 비선형 제약 조건 함수
intcon: 정수형 변수 인덱스
options: 최적화 옵션

1.4 주요 입력/출력 인수

입력: 목적 함수, 변수 수, 제약 조건, 변수 경계, 정수 제약, 최적화 옵션
출력: 최적해(x), 목적 함수 값(fval), 종료 조건(exitflag), 최적화 정보(output), 최종 개체군(population), 개체 점수(scores)

1.5 활용 팁

복잡한 최적화 문제 해결 시 초기 개체군을 조절하거나 옵션을 통해 알고리즘 성능을 개선.
정수형 변수 사용 시 비선형 등식 제약 불가.
익명 함수(@)를 활용하여 추가 매개변수 전달 가능.

2. Function Options

2.1 Population Options (인구 관련 옵션)

유전 알고리즘의 초기 인구와 세대별 개체군에 대한 설정.
PopulationSize (세대 크기)
각 세대에서 유지할 개체의 수를 지정. 개체 수가 많을수록 탐색 공간이 넓어져 전역 최적해를 찾을 확률이 높아지지만, 계산 비용도 증가함.
기본값: 50
권장: 문제의 복잡성에 따라 조절 (복잡한 문제일수록 값 증가).
InitialPopulationMatrix (초기 인구 행렬)
초기 세대의 개체를 사용자가 직접 정의할 수 있는 행렬. 각 행은 하나의 개체를 나타내며, 알고리즘의 시작점을 사용자 정의로 설정할 수 있음. → 초기 값이 중요한 문제에서 사용.
InitialScoresMatrix (초기 적합도 행렬)
초기 인구에 대한 적합도 값을 직접 지정할 수 있는 옵션으로, 초기 인구를 사용자가 직접 정의하는 경우 함께 사용하면 적합함.

2.2 Selection and Crossover Options (선택 및 교배 옵션)

부모 선택과 교배 과정에 관련된 설정으로, 새로운 세대를 만드는 핵심 메커니즘임.
SelectionFcn (부모 선택 함수)
다음 세대의 부모를 선택하는 방법을 지정하며, 선택 방법에 따라 알고리즘의 탐색 능력과 수렴 속도가 달라짐.
기본값: 'stochunif' (Stochastic Uniform Selection)
기타 선택 가능 함수:
'tournament': 토너먼트 방식으로 경쟁을 통해 부모 선택
'roulette': 룰렛 휠 방식으로 확률적으로 부모 선택
CrossoverFcn (교배 함수)
선택된 부모를 이용해 새로운 개체를 만드는 함수. 다양한 교차 방식이 있으며, 문제 특성에 맞게 선택 가능.
기본값: 'crossoverscattered' (분산 교차)
기타 선택 가능 함수:
'crossoverintermediate': 부모 값의 평균에 기반한 교차
'crossoverarithmetic': 선형 결합을 통해 자식 생성
CrossoverFraction (교배 비율)
다음 세대를 생성할 때 교배를 통해 만들어지는 개체의 비율을 설정. 나머지는 엘리트 선택이나 돌연변이를 통해 채워짐.
기본값: 0.8 → 값이 클수록 새로운 해를 더 많이 생성하지만, 다양성이 줄어들 수 있음.

2.3 Mutation Options (돌연변이 옵션)

돌연변이는 탐색 공간을 넓히고 지역 최적해에서 벗어나기 위한 메커니즘임.
MutationFcn (돌연변이 함수) 돌연변이를 수행하는 함수를 지정. 돌연변이를 통해 개체의 일부 값을 변경하여 새로운 해를 탐색.
기본값: 'mutationgaussian' (가우시안 분포 기반 돌연변이)
기타 선택 가능 함수:
'mutationuniform': 균등 분포 기반으로 임의의 값을 선택
'mutationadaptfeasible': 제약 조건을 고려한 돌연변이 적용

2.4 Constraint Options (제약 조건 옵션)

최적화 과정에서 만족해야 하는 제약 조건에 대한 설정.
ConstraintTolerance (제약 조건 허용 오차) 해가 제약 조건을 얼마나 정확히 만족해야 하는지 설정. 값이 작을수록 엄격하지만, 계산 시간이 늘어날 수 있음.
기본값: 1e-6 → 너무 작은 값을 설정하면 해를 찾기 어렵거나 시간이 오래 걸릴 수 있음.

2.5 Stopping Criteria Options (종료 조건 옵션)

알고리즘이 언제 종료할지를 결정하는 조건.
MaxGenerations (최대 세대 수)
알고리즘이 실행할 최대 세대 수를 지정하며, 이 수에 도달하면 최적화가 종료됨.
기본값: 100
MaxStallGenerations (정체 허용 세대 수)
적합도 값이 일정 세대 동안 개선되지 않을 경우 알고리즘을 종료함.
기본값: 50
FunctionTolerance (함수 허용 오차)
최적화가 수렴했다고 판단하기 위한 기준이며, 적합도 값의 변화가 이 값보다 작으면 최적화가 종료됨.
기본값: 1e-6

2.6 Other Options (기타 옵션)

유전 알고리즘의 실행 상태를 확인하거나 결과를 시각화하기 위한 옵션.
Display (출력 정보 수준)
최적화 진행 상태를 얼마나 상세히 표시할지를 설정.
옵션:
'off': 아무 출력도 표시하지 않음
'iter': 각 세대별로 진행 상황 표시
'final': 최적화 종료 시 최종 결과만 표시 (기본값)
PlotFcn (플롯 함수)
최적화 과정 중 알고리즘의 진행 상황을 시각화. 여러 개의 플롯 함수를 사용할 수 있으며, 목록 형태로 설정 가능.
예시:
'gaplotbestf': 세대별 최적 적합도 값 플롯
'gaplotscorediversity': 개체들의 다양성 표시
사용 예:
options = optimoptions('ga', 'PlotFcn', {@gaplotbestf, @gaplotstopping});
MATLAB
복사

사용 예시

% 목적 함수 정의 fun = @(x) x(1)^2 + x(2)^2; % 옵션 설정 options = optimoptions('ga', ... 'PopulationSize', 100, ... 'MaxGenerations', 200, ... 'CrossoverFraction', 0.9, ... 'PlotFcn', {@gaplotbestf, @gaplotstopping}, ... 'Display', 'iter'); % 유전 알고리즘 실행 [x, fval] = ga(fun, 2, [], [], [], [], [-5, -5], [5, 5], [], options);
MATLAB
복사

전역 최적화가 필요한 문제에 적합하며, 지역 최적화 알고리즘에 비해 계산량이 많을 수 있음
초기 인구와 돌연변이 비율을 조절하여 수렴 속도를 개선할 수 있음
정수 제약 조건 사용 시, 비선형 등식 제약 조건은 적용할 수 없음