이 번역 페이지는 최신 내용을 담고 있지 않습니다. 최신 내용을 영문으로 보려면 여기를 클릭하십시오.
particleswarm
을 사용하여 함수 최적화하기(문제 기반)
이 예제에서는 목적 함수가 함수 파일(내용을 알 수 없는 "블랙박스" 함수 파일인 경우 포함)일 때 문제 기반 접근법에서 입자 군집을 사용하여 함수를 최소화하는 방법을 보여줍니다. 이 예제를 실행할 때 최소화할 함수 dejong5fcn(x)
가 포함됩니다.
dejong5fcn
2차원 최적화 변수 x
를 만듭니다. dejong5fcn
함수에서는 변수가 행 벡터여야 하므로 x
를 요소를 2개 가진 행 벡터로 지정합니다.
x = optimvar("x",1,2);
dejong5fcn
을 목적 함수로 사용하려면 fcn2optimexpr
을 사용하여 함수를 최적화 표현식으로 변환합니다.
fun = fcn2optimexpr(@dejong5fcn,x);
목적 함수 fun
을 사용하는 최적화 문제를 만듭니다.
prob = optimproblem("Objective",fun);
모든 성분에서 –50에서 50까지의 변수 범위를 설정합니다. 스칼라 범위를 지정하면 이 범위가 모든 변수로 확장됩니다.
x.LowerBound = -50; x.UpperBound = 50;
particleswarm
솔버를 지정하여 문제를 풉니다.
rng default % For reproducibility [sol,fval] = solve(prob,"Solver","particleswarm")
Solving problem using particleswarm. Optimization ended: relative change in the objective value over the last OPTIONS.MaxStallIterations iterations is less than OPTIONS.FunctionTolerance.
sol = struct with fields:
x: [-31.9751 -31.9719]
fval = 0.9980
참고 항목
particleswarm
| fcn2optimexpr
| solve