Main Content

simulannealbnd를 사용하여 함수 최적화하기(문제 기반)

이 예제에서는 목적 함수가 함수 파일(내용을 알 수 없는 "블랙박스" 함수 파일인 경우 포함)일 때 문제 기반 접근법에서 담금질 기법을 사용하여 함수를 최소화하는 방법을 보여줍니다. 이 예제를 실행할 때 최소화할 함수 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;

범위 내에 의사 랜덤 초기점을 설정합니다. 초기점은 필드 x가 있는 구조체입니다.

rng default % For reproducibility
x0.x = x.LowerBound + rand(size(x.LowerBound)).*x.UpperBound;

simulannealbnd 솔버를 지정하여 문제를 풉니다.

[sol,fval] = solve(prob,x0,"Solver","simulannealbnd")
Solving problem using simulannealbnd.
simulannealbnd stopped because the change in best function value is less than options.FunctionTolerance.
sol = struct with fields:
    x: [-32.0371 -31.8792]

fval = 0.9980

참고 항목

| |

관련 항목