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