createOptimProblem
최적화 문제 구조체 만들기
설명
은 problem
= createOptimProblem(solverName
)solverName
솔버를 위해 빈 최적화 문제 구조체를 만듭니다.
는 하나 이상의 이름-값 인수를 사용하여 추가 옵션을 지정합니다.problem
= createOptimProblem(solverName
,Name,Value
)
예제
다음 사양으로 문제 구조체를 만듭니다.
fmincon
솔버"interior-point"
알고리즘임의의 2차원 초기점
x0
목적인 로젠브록 함수
하한 -2
상한 2
2차원 변수 에 대한 로젠브록 함수는 입니다(자세한 내용은 최적화 라이브 편집기 작업 또는 솔버를 사용한, 제약 조건이 있는 비선형 문제 항목을 참조하십시오). "interior-point"
알고리즘을 지정하려면 optimoptions
를 사용하여 옵션을 만듭니다.
anonrosen = @(x)(100*(x(2) - x(1)^2)^2 + (1-x(1))^2); opts = optimoptions(@fmincon,Algorithm="interior-point"); rng default % For reproducibility problem = createOptimProblem("fmincon",... x0=randn(2,1),... objective=anonrosen,... lb=[-2;-2],... ub=[2;2],... options=opts);
fmincon
을 호출하여 problem.x0
에서 문제 풀이를 시작합니다.
[x,fval] = fmincon(problem)
Local minimum possible. Constraints satisfied. fmincon stopped because the size of the current step is less than the value of the step size tolerance and constraints are satisfied to within the value of the constraint tolerance. <stopping criteria details>
x = 2×1
1.0000
1.0000
fval = 2.0603e-11
GlobalSearch
를 호출하여 더 나은 해를 찾아봅니다.
gs = GlobalSearch; [x2,fval2] = run(gs,problem)
GlobalSearch stopped because it analyzed all the trial points. All 16 local solver runs converged with a positive local solver exit flag.
x2 = 2×1
1.0000
1.0000
fval2 = 2.1093e-11
이 경우 fmincon
과 GlobalSearch
모두 동일한 해에 도달합니다.
입력 인수
최적화 솔버로, 다음 유형 중 하나로 지정됩니다.
GlobalSearch
의 경우"fmincon"
또는@fmincon
을 지정합니다.MultiStart
의 경우"fmincon"
이나@fmincon
,"fminunc"
나@fminunc
,"lsqnonlin"
이나@lsqnonlin
또는"lsqcurvefit"
이나@lsqcurvefit
을 지정합니다.
예: "fmincon"
데이터형: char
| string
| function_handle
이름-값 인수
선택적 인수 쌍을 Name1=Value1,...,NameN=ValueN
으로 지정합니다. 여기서 Name
은 인수 이름이고 Value
는 대응값입니다. 이름-값 인수는 다른 인수 뒤에 와야 하지만, 인수 쌍의 순서는 상관없습니다.
R2021a 이전 릴리스에서는 쉼표를 사용하여 각 이름과 값을 구분하고 Name
을 따옴표로 묶으십시오.
예: createOptimProblem("fmincon","x0",x0,"objective",fun,"lb",zeros(size(x0)))
선형 등식 제약 조건으로, 실수 행렬로 지정됩니다. Aeq
는 Me
×nvars
행렬입니다. 여기서 Me
는 등식 개수입니다.
Aeq
는 다음과 같이 Me
개의 선형 등식을 인코딩합니다.
Aeq*x = beq
,
여기서 x
는 N
개의 변수 x(:)
으로 구성된 열 벡터이고, beq
는 Me
개의 요소를 갖는 열 벡터입니다.
예를 들어 다음을 지정하려는 경우,
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,
다음 제약 조건을 지정합니다.
Aeq = [1,2,3;2,4,1]; beq = [10;20];
예: 제어 변수의 합이 1이 되도록 지정하려면 제약 조건 Aeq = ones(1,N)
및 beq = 1
을 지정합니다.
데이터형: double
선형 부등식 제약 조건으로, 실수 행렬로 지정됩니다. Aineq
는 M
×nvars
행렬입니다. 여기서 M
은 부등식 개수입니다.
Aineq
는 다음과 같이 M
개의 선형 부등식을 인코딩합니다.
Aineq*x <= bineq
,
여기서 x
는 nvars
개의 변수 x(:)
으로 구성된 열 벡터이고, bineq
는 M
개의 요소를 갖는 열 벡터입니다.
예를 들어 다음을 지정하려는 경우,
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
다음 제약 조건을 지정합니다.
Aineq = [1,2;3,4;5,6]; bineq = [10;20;30];
예: 제어 변수의 합이 1 이하가 되도록 지정하려면 제약 조건 Aineq = ones(1,N)
및 bineq = 1
을 지정합니다.
데이터형: double
선형 등식 제약 조건으로, 실수 벡터로 지정됩니다. beq
는 Aeq
행렬과 관련된, 요소를 Me
개 가진 벡터입니다. beq
를 행 벡터로 전달하면 솔버는 내부적으로 beq
를 열 벡터 beq(:)
으로 변환합니다.
beq
는 다음과 같이 Me
개의 선형 등식을 인코딩합니다.
Aeq*x = beq
,
여기서 x
는 N
개의 변수 x(:)
으로 구성된 열 벡터이고, Aeq
는 크기가 Meq
×N
인 행렬입니다.
예를 들어 다음을 지정하려는 경우,
x1 + 2x2 + 3x3 = 10
2x1 + 4x2 + x3 = 20,
다음 제약 조건을 지정합니다.
Aeq = [1,2,3;2,4,1]; beq = [10;20];
예: 제어 변수의 합이 1이 되도록 지정하려면 제약 조건 Aeq = ones(1,N)
및 beq = 1
을 지정합니다.
데이터형: double
선형 부등식 제약 조건으로, 실수 벡터로 지정됩니다. bineq
는 Aineq
행렬과 관련된, 요소를 M
개 가진 벡터입니다. bineq
를 행 벡터로 전달하면 솔버는 내부적으로 bineq
를 열 벡터 bineq(:)
으로 변환합니다.
bineq
는 다음과 같이 M
개의 선형 부등식을 인코딩합니다.
Aineq*x <= bineq
,
여기서 x
는 N
개의 변수 x(:)
으로 구성된 열 벡터이고, Aineq
는 크기가 M
×N
인 행렬입니다.
예를 들어 다음을 지정하려는 경우,
x1 + 2x2 ≤ 10
3x1 + 4x2 ≤ 20
5x1 + 6x2 ≤ 30,
다음 제약 조건을 지정합니다.
Aineq = [1,2;3,4;5,6]; bineq = [10;20;30];
예: 제어 변수의 합이 1 이하가 되도록 지정하려면 제약 조건 Aineq = ones(1,N)
및 bineq = 1
을 지정합니다.
데이터형: double
하한으로, double형으로 구성된 실수형 벡터 또는 배열로 지정됩니다. lb
는 lb
≤ x
≤ ub
에서 요소별 하한을 나타냅니다.
내부적으로 createOptimProblem
는 배열 lb
를 벡터 lb(:)
으로 변환합니다.
예: lb = [0;-Inf;4]
는 x(1) ≥ 0
, x(3) ≥ 4
를 의미합니다.
데이터형: double
비선형 제약 조건으로, 함수 핸들 또는 함수 이름으로 지정됩니다. nonlcon
은 배열 x
를 받고 두 개의 배열 c(x)
와 ceq(x)
를 반환하는 함수입니다.
c(x)
는x
의 비선형 부등식 제약 조건으로 구성된 배열입니다. 이 솔버는 모든c
요소에 대해c(x) <= 0
을 충족하려고 시도합니다.ceq(x)
는x
의 비선형 등식 제약 조건으로 구성된 배열입니다. 이 솔버는 모든ceq
요소에 대해ceq(x) = 0
을 충족하려고 시도합니다.
예를 들어, nonlcon
은 다음과 같은 MATLAB® 함수입니다.
function [c,ceq] = nonlcon(x) c = ... % Compute nonlinear inequalities at x. ceq = ... % Compute nonlinear equalities at x.
자세한 내용은 비선형 제약 조건 항목을 참조하십시오.
데이터형: char
| string
| function_handle
목적 함수로, 함수 핸들 또는 함수 이름으로 지정됩니다.
lsqnonlin
,lsqcurvefit
을 제외한 모든 솔버의 경우 목적 함수가 배열x
를 받고 스칼라를 반환해야 합니다.SpecifyObjectiveGradient
옵션이true
인 경우 목적 함수는 목적의 기울기를 나타내는 벡터인 두 번째 출력값을 반환해야 합니다. 자세한 내용은fun
항목을 참조하십시오.lsqnonlin
의 경우 목적 함수는 벡터x
를 받고 스칼라를 반환해야 합니다.SpecifyObjectiveGradient
옵션이true
인 경우 목적 함수는 목적의 야코비 행렬을 나타내는 행렬인 두 번째 출력값을 반환해야 합니다. 자세한 내용은fun
항목을 참조하십시오.lsqcurvefit
의 경우 목적 함수는 2개의 입력값, 즉x
및xdata
를 받고 벡터를 반환해야 합니다.SpecifyObjectiveGradient
옵션이true
인 경우 목적 함수는 목적의 야코비 행렬을 나타내는 행렬인 두 번째 출력값을 반환해야 합니다. 자세한 내용은fun
항목을 참조하십시오.
예: @sin
예: "sin"
데이터형: char
| string
| function_handle
최적화 옵션으로, optimoptions
의 출력값으로 지정됩니다.
예: optimoptions("fmincon","SpecifyObjectiveGradient",true)
상한으로, double형으로 구성된 실수형 벡터 또는 배열로 지정됩니다. ub
는 lb
≤ x
≤ ub
에서 요소별 상한을 나타냅니다.
내부적으로 createOptimProblem
는 배열 ub
를 벡터 ub(:)
으로 변환합니다.
예: ub = [Inf;4;10]
는 x(2) ≤ 4
, x(3) ≤ 10
을 의미합니다.
데이터형: double
초기점으로, 실수형 벡터나 실수형 배열로 지정됩니다. 솔버는 x0
의 요소 개수와 x0
의 크기를 사용하여 fun
이 받는 변수의 개수와 크기를 확인합니다.
예: x0 = [1,2,3,4]
데이터형: double
모델의 입력 데이터로, 실수형 벡터나 실수형 배열로 지정됩니다. 모델은 다음과 같습니다.
ydata = fun(x,xdata)
,
여기서 xdata
와 ydata
는 고정된 배열이고, x
는 lsqcurvefit
이 최소 제곱합을 찾기 위해 변경하는 파라미터로 구성된 배열입니다.
예: xdata = [1,2,3,4]
데이터형: double
모델의 응답 데이터로, 실수형 벡터나 실수형 배열로 지정됩니다. 모델은 다음과 같습니다.
ydata = fun(x,xdata)
,
여기서 xdata
와 ydata
는 고정된 배열이고, x
는 lsqcurvefit
이 최소 제곱합을 찾기 위해 변경하는 파라미터로 구성된 배열입니다.
ydata
배열은 배열 fun(x0,xdata)
와 크기와 형태가 같아야 합니다.
예: ydata = [1,2,3,4]
데이터형: double
출력 인수
버전 내역
R2010a에 개발됨
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
웹사이트 선택
번역된 콘텐츠를 보고 지역별 이벤트와 혜택을 살펴보려면 웹사이트를 선택하십시오. 현재 계신 지역에 따라 다음 웹사이트를 권장합니다:
또한 다음 목록에서 웹사이트를 선택하실 수도 있습니다.
사이트 성능 최적화 방법
최고의 사이트 성능을 위해 중국 사이트(중국어 또는 영어)를 선택하십시오. 현재 계신 지역에서는 다른 국가의 MathWorks 사이트 방문이 최적화되지 않았습니다.
미주
- América Latina (Español)
- Canada (English)
- United States (English)
유럽
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)