Main Content

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

particleswarm을 사용하여 함수 최적화하기(문제 기반)

이 예제에서는 목적 함수가 함수 파일(내용을 알 수 없는 "블랙박스" 함수 파일인 경우 포함)일 때 문제 기반 접근법에서 입자 군집을 사용하여 함수를 최소화하는 방법을 보여줍니다. 이 예제를 실행할 때 최소화할 함수 dejong5fcn(x)가 포함됩니다.

dejong5fcn

Figure contains an axes object. The axes object contains 2 objects of type surface, contour.

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

참고 항목

| |

관련 항목