이번역페이지는최신내용을담고있지않습니다。최신내용을문으로보려면여기를클릭하십시오。
제약조건이있는비선형다변수함수의최솟값구하기
비선형계획법솔버입니다。
다음으로지정된문제의최솟값을구합니다。
, b와beq는벡터이고와Aeq는행렬이고,c (x)测查와(x)는벡터를반환하는함수이고,f (x)는스칼라를반환하는함수입니다。F (x) c(x) ceq(x)는비선형함수일수있습니다。
X, lb, ub는벡터또는행렬로전달될수있습니다。행렬marketing수항목을참조하십시오。
는해가항상범위x
= fmincon (有趣的
,x0
,一个
,b
,Aeq
,说真的
,磅
,乌兰巴托
)磅
≤x
≤乌兰巴托
내에있도록x
의설계변수에대한하한및상한집합을정의합니다。등식이존재하지않는경우Aeq = []
및Beq = []
을설정하십시오。x(我)
의하한이비유계경우lb(i) = -无穷大
를설정하고,x(我)
의상한이비유계경우ub(i) =无穷大
를설정하십시오。
참고
문제에대해지정된입력값범위에모순이있는경우fmincon
은오류를발생시킵니다。이경우,출력값x
는x0
이 되고fval
은[]
이됩니다。
디폴트“内点”
알고리즘의경우fmincon
은 범위Lb≤x≤ub
을위반하거나범위의경계값과같은x0
의성분을범위역의내부로설정합니다。“trust-region-reflective”
알고리즘의경우fmincon
은위반하는성분을범위역의내부로설정합니다。다른알고리즘의경우fmincon
은위반하는성분을가장가까운범위경계로설정합니다。범위를준수하는성분은변경되지않습니다。迭代可能会违反约束항목을참조하십시오。
선형부등식제약조건이있는경우로젠브록함수(。函数)의최솟값을구합니다。
목적 함수有趣的
을로젠브록함수로설정합니다。로젠브록함수는최소화하기어려운것으로잘알려져있습니다。이함수는점(1,1)에서최소목적함수값0을가집니다。자세한내용은제약조건이있는비선형문제풀기,솔버기반항목을참조하십시오。
趣味= @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
을충족하도록규정하는제약조건이있는상태로점[1,2]
에서시작하여최솟값을구합니다。A = [1,2]
및B = 1
을사용하여Ax <= b
형식으로이제약조건을나타냅니다。이제약조건은제약조건이없을때의해(1,1)은이문제의해가될수없음을의미합니다。그이유는이점에서는
이되기때문입니다。
X0 = [-1,2];A = [1,2];B = 1;x = fmincon(fun,x0,A,b)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
x =1×20.5022 - 0.2489
선형부등식제약조건과선형등식제약조건이모두있는경우로젠브록함수(。函数)의최솟값을구합니다。
목적 함수有趣的
을로젠브록함수로설정합니다。
趣味= @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
및
을충족하도록규정하는제약조건이있는상태로점(0.5, 0)
에서시작하여최솟값을구합니다。
A = [1,2]
및B = 1
을사용하여A*x <= b
형식으로선형부등식제약조건을나타냅니다。
Aeq = [2,1]
및Beq = 1
을사용하여Aeq*x = beq
형식으로선형등식제약조건을나타냅니다。
X0 = [0.5,0];A = [1,2];B = 1;Aeq = [2,1];Beq = 1;x = fmincon(fun,x0,A,b,Aeq,beq)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
x =1×20.4149 - 0.1701
범위제약조건이있는상태에서목적함수의최솟값을구합니다。
목적함수는두개의변수로구성된단순한대수함수입니다。
有趣= @ (x) 1 + x (1) / (1 + x (2)) - 3 * x (1) * (2) + x (2) * (1 + x (1));
가 및 를충족하는양수값을갖는역을살펴봅니다。
Lb = [0,0];Ub = [1,2];
문제에선형제약조건이없으므로관련수를[]
로설정합니다。
A = [];B = [];Aeq = [];Beq = [];
초기점으로역의가운데점을사용해봅니다。
X0 = (lb + ub)/2;
문제를풉니다。
x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
x =1×21.0000 - 2.0000
초기점마다각각다른해가생성될수있습니다。
X0 = X0 /5;x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
x =1×2106× 0.4000 0.4000
어느해가더적합한지확하려면목적함수값구하기항목을참조하십시오。
비선형제약조건을적용하여함수의최솟값을구합니다。
로젠브록함수(。函数)가원내에서최소화되는점을찾습니다。여기에는범위제약조건도적용됩니다。
趣味= @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;
,
을충족하는역내부를살펴봅니다。
Lb = [0,0.2];Ub = [0.5,0.8];
또한,반지름이1/3이며중심이[1/3,1/3]원내부도살펴봅니다。다음코드를matlab®경로에있는circlecon.m
이라는파일로복사합니다。
版权所有The MathWorks, Inc.函数测查[c] = circlecon c (x) = (x (1) 1/3) ^ 2 + (x (2) 1/3) ^ 2 - (1/3) ^ 2;Ceq = [];
선형제약조건이없으므로관련수를[]
로설정합니다。
A = [];B = [];Aeq = [];Beq = [];
모든제약조건을충족하는초기점을선택합니다。
X0 = [1/4,1/4];
문제를풉니다。
Nonlcon = @circlecon;x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。X = 0.5000 0.2500
다른알고리즘을사용하고반복이발생할때마다반복상태를@ @시하도록옵션을설정합니다。
fmincon
풀이과정을관찰하기위해显示
옵션을“通路”
로설정합니다。또한,“sqp”
알고리즘을사용해봅니다。때때로이알고리즘이디폴트“内点”
알고리즘보다더빠르거나정확할수있습니다。
选项= optimoptions(“fmincon”,“显示”,“通路”,“算法”,“sqp”);
단위 원판에대한로젠브록함수(Rosenbrock函数)의최솟값을구합니다。먼저,비선형제약조건을나타내는함수를만듭니다。이함수를matlab®경로에
unitdisk.m
이라는파일로저장합니다。
函数[c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1;Ceq = [];
나머지문제사양을만듭니다。그런 후fmincon
을실행합니다。
趣味= @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];Nonlcon = @unitdisk;X0 = [0,0];x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
Iter Func-count Fval可行性步长规范一阶步长优化03 1.000000e+00 0.000e+00 1.000e+00 1.000e+00 0.000e+00 1.353e -01 1.107e+01 2 22 8.047847e-01 0.000e+00 8.235e-02 1.900e-01 1.330e+ 00 3 28 4.197517e-01 0.000e+00 3.430e-01 1.172e +00 4 31 2.733703e-01 0.000e+00 1.000e+00 5.254e-02 5.705e-01 5 34 2.397111e-01 0.000e+00 1.000e+00 5.498e -02 3.164e+00 6 37 2.036002e-01 0.000e+00 1.000e+00 5.960e-02 3.106e+00 7 401.164353e-01 0.000e+00 1.000e+00 1.459e-01 1.059e+00 1.383e +00 1.754e-01 7.383e+00 1.383e -02 0.000e+00 1.898e +00 1.547e-02 7.278e-01 10 49 4.533081e-02 2.898e-03 1.000e+00 1.492e-03 1.679e-03 12 55 4.567481e-02 1.000e+00 1.95e -06 1.501e-05 13 58 4.567481e-02 0.000e+00 1.000e+00 2.159e-09 1.511e-05本地最小可能值。约束满足。Fmincon停止,因为当前步长的大小小于步长公差的值,并且约束被满足到约束公差的值之内。X = 0.7864 0.6177
더욱빠르거나더욱정적계산을위해목적함수에기울기계산을포함시킵니다。
목적함수파일에조건화된출력값으로기울기계산을포함시킵니다。자세한내용은기울기와헤세행렬포함시키기항목을참조하십시오。목적함수는다음과같은로젠브록함수(Rosenbrock函数)이며,
기울기는다음과같습니다。
函数[f,g] = rosenbrockwithgrad(x)计算目标fF = 100*(x(2) -x(1)²)²+ (1-x(1))²;如果Nargout > 1所需梯度百分比G = [-400*(x(2)-x(1)^2)*x(1)-2*(1-x(1));200 * (x (2) - x (1) ^ 2)];结束
이코드를matlab®경로에rosenbrockwithgrad.m
이라는파일로저장합니다。
목적함수기울기를사용하도록옵션을만듭니다。
选项= optimoptions(“fmincon”,“SpecifyObjectiveGradient”,真正的);
문제에대한그밖의입력값을만듭니다。그런다음,fmincon
을호출합니다。
乐趣= @rosenbrockwithgrad;X0 = [-1,2];A = [];B = [];Aeq = [];Beq = [];Lb = [- 2,2];Ub = [2,2];Nonlcon = [];x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。X = 1.0000 1.0000
개별수대신문제구조체를사용하여디폴트가아닌옵션에나와있는것과동일한문제를풉니다。
옵션과문제구조체를만듭니다。필드이름과필수필드는问题항목을참조하십시오。
选项= optimoptions(“fmincon”,“显示”,“通路”,“算法”,“sqp”);问题。选项=选项;问题。解算器=“fmincon”;问题。目标= @ (x) 100 * (x (2) - x (1) ^ 2) ^ 2 + (1 - x (1)) ^ 2;问题。x0=[0,0];
비선형제약조건함수unitdisk
는이예제의마지막부분에나와있습니다。问题
에비선형제약조건함수를포함시킵니다。
问题。nonlcon=@unitdisk;
문제를풉니다。
X = fmincon(问题)
Iter Func-count Fval可行性步长规范一阶步长优化03 1.000000e+00 0.000e+00 1.000e+00 1.000e+00 0.000e+00 1.353e -01 1.107e+01 2 22 8.047847e-01 0.000e+00 8.235e-02 1.900e-01 1.330e+ 00 3 28 4.197517e-01 0.000e+00 3.430e-01 1.172e +00 4 31 2.733703e-01 0.000e+00 1.000e+00 5.254e-02 5.705e-01 5 34 2.397111e-01 0.000e+00 1.000e+00 5.498e -02 3.164e+00 6 37 2.036002e-01 0.000e+00 1.000e+00 5.960e-02 3.106e+00 7 401.164353e-01 0.000e+00 1.000e+00 1.459e-01 1.059e+00 1.383e +00 1.754e-01 7.383e+00 1.383e -02 0.000e+00 1.898e +00 1.547e-02 7.278e-01 10 49 4.533081e-02 2.898e-03 1.000e+00 1.492e-03 1.679e-03 12 55 4.567481e-02 1.000e+00 1.95e -06 1.501e-05 13 58 4.567481e-02 0.000e+00 1.000e+00 2.159e-09 1.511e-05本地最小可能值。约束满足。Fmincon停止,因为当前步长的大小小于步长公差的值,并且约束被满足到约束公差的值之内。
x =1×20.7864 - 0.6177
반복과정@ @시와해는디폴트가아닌옵션에서와같습니다。
다음코드는unitdisk
함수를생성합니다。
函数[c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1;Ceq = [];结束
fval
출력값을사용하여fmincon
을호출함으로써해에서의목적함수값을구합니다。
범위제약조건이있는경우최소화하기예제에서는두개의해를보여줍니다。어느것이더적합한가?fval
출력값과해를청하는예제를실행합니다。
有趣= @ (x) 1 + x (1) / (1 + x (2)) - 3 * x(1)。* x (2) + (2) * (1 + x (1));Lb = [0,0];Ub = [1,2];A = [];B = [];Aeq = [];Beq = [];X0 = (lb + ub)/2;[x,fval] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
x =1×21.0000 - 2.0000
Fval = -0.6667
다른시작점x0
을사용하여문제를실행합니다。
X0 = X0 /5;[x2,fval2] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。
x2 =1×2106× 0.4000 0.4000
Fval2 = 1.0000
이해는목적함수값fval2
= 1을가집니다。이는첫번째값fval
= -0.6667보다더높습니다。첫 번째 해x
가더낮은극소목적함수값을가집니다。
exitflag
출력값과输出
출력값을청하면해의품질을손쉽게검토할수있습니다。
단위 원판에대해로젠브록함수(。函数)를최소화하는문제를설정합니다。먼저,비선형제약조건을나타내는함수를만듭니다。이함수를matlab®경로에
unitdisk.m
이라는파일로저장합니다。
函数[c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1;Ceq = [];
나머지문제사양을만듭니다。
趣味= @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;Nonlcon = @unitdisk;A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];X0 = [0,0];
fval
,exitflag
,输出
출력값을사용하여fmincon
을호출합니다。
[x,fval,exitflag,output] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。x = 0.7864 0.6177 fval = 0.0457 exitflag = 1 output = struct with fields: iterations: 24 funcCount: 84 constrviolation: 0 stepsize: 6.9162e-06 algorithm: ' internal -point' firstorderopt: 2.4373e-08 cgiterations: 4 message: '…' bestviable: [1x1 struct]
exitflag
값1
은해가국소최솟값이라는것을나타냅니다。
输出
구조체는풀이과정에대한여러통계량을보고합니다。특히,output.iterations
에반복횟수,output.funcCount
에함수실행횟수,output.constrviolation
에실현가능성을제공합니다。
fmincon
은보고된해를분석하는데사용할수있는여러출력값을선택적으로반환합니다。
단위원판에대해로젠브록함수(。函数)를최소화하는문제를설정합니다。먼저,비선형제약조건을나타내는함수를만듭니다。이함수를matlab®경로에unitdisk.m
이라는파일로저장합니다。
函数[c,ceq] = unitdisk(x) c = x(1)^2 + x(2)^2 - 1;Ceq = [];
나머지문제사양을만듭니다。
趣味= @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;Nonlcon = @unitdisk;A = [];B = [];Aeq = [];Beq = [];Lb = [];Ub = [];X0 = [0,0];
모든fmincon
출력값을청합니다。
[x,fval,exitflag,output,lambda,grad,hessian] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon)
找到满足约束条件的局部最小值。优化完成是因为目标函数在可行方向上不递减,在最优性容差值范围内,约束条件满足在约束容差值范围内。x = 0.7864 0.6177 fval = 0.0457 exitflag = 1 output = struct with fields: iterations: 24 funcCount: 84 constrviolation: 0 stepsize: 6.9162e-06 algorithm: ' internal -point' firstorderopt: 2.4373e-08 cgiterations: 4 message: '…' bestviable: [1x1 struct]λ=结构体with fields: eqlin: [0x1 double] eqnonlin: [0x1 double] ineqlin: [0x1 double] lower: [2x1 double] upper: [2x1 double] ineqnonlin: 0.1215 grad = -0.1911 -0.1501 hessian = 497.2903 -314.5589 -314.5589 200.2392
lambda.ineqnonlin
출력값은비선형제약조건이해에서활성상태라는것을보여주고연결된라그랑주승수의값을제공합니다。
研究生
출력값은해x
에서의목적함수의기울기값을제공합니다。
黑森
출력값은Fmincon헤세행렬에설명되어있습니다。
有趣的
- - - - - -최소화할함수최소화할함수로,함수핸들이나함수이름으로지정됩니다。有趣的
은벡터또는배열x
를받고실수형스칼라f
를반환하는함수입니다。즉,x
에서계산되는목적함수입니다。
다음과같이有趣的
을파일에대한함수핸들로지정합니다。
x = fmincon(@myfun,x0,A,b)
여기서myfun
은다음과같은matlab®함수입니다。
函数f = myfun(x) f =…计算x处的函数值
다음과같이有趣的
을익명함수에대한함수핸들로지정할수도있습니다。
x = fmincon(@(x)norm(x)^2,x0,A,b);
有趣的
의기울기를계산할수있고다음설정처럼SpecifyObjectiveGradient
옵션이真正的
로설정된경우
options = optimoptions('fmincon',' speciyobjectivegradient ',true)
有趣的
은두번째출력수에기울기벡터g (x)
를반환해야합니다。
헤세행렬도계산할수있고optimoptions
를 통해HessianFcn
옵션이“目标”
로설정되어있고算法
옵션이“trust-region-reflective”
경우,有趣的
은세번째출력수에대칭행렬헤세행렬값H (x)
를반환해야합니다。有趣的
은희소헤세행렬을제공할수있습니다。자세한내용은Fminunc의trust-region알고리즘또는fmincon의trust-region-reflective알고리즘에대한헤세행렬항목을참조하십시오。
헤세행렬도계산할수있고算法
옵션이“内点”
로설정된경우,헤세행렬을fmincon
에전달할수있는다른방법이있습니다。자세한내용은Fmincon의内部点알고리즘에대한헤세행렬항목을참조하십시오。符号数学工具箱™를사용하여기울기와헤세행렬을계산하는예제는计算梯度和黑森使用符号数学工具箱™항목을참조하십시오。
内点
알고리즘과trust-region-reflective
알고리즘을사용하면헤세행렬의곱셈함수를제공할수있습니다。이함수는헤세행렬을직접계산하지않고헤세행렬과벡터의곱에대한결과를제공합니다。따라서메모리를절약할수있습니다。헤세행렬의곱셈함수항목을참조하십시오。
예:趣味= @(x)sin(x(1))*cos(x(2))
데이터형:字符
|function_handle
|字符串
x0
- - - - - -초기점一个
- - - - - -선형부등식제약조건선형부등식제약조건으로,실수행렬로지정됩니다。一个
는米
×N
행렬입니다。여기서米
은부등식개수이고N
은변수개수(x0
의소개수)입니다。대규모문제의경우,一个
를희소행렬로전달하십시오。
一个
는다음과같이米
개의선형부등식을코딩합니다。
A*x <= b
,
여기서x
는N
개의 변수x (:)
으로구성된열벡터이고,b
는米
개의소를갖는열벡터입니다。
예를들어다음을지정하려면
x1+ 2倍2≤10
3 x1+ 4 x2≤20
5倍1+ 6 x2≤30日
다음제약조건을입력해야합니다。
A = [1,2;3,4;5,6];B = [10;20;30];
예:X성분의합이1이하가되도록지정하려면A = ones(1,N)
및B = 1
을사용하십시오。
데이터형:双
b
- - - - - -선형부등식제약조건선형부등식제약조건으로,실수벡터로지정됩니다。b
는一个
행렬과관련된,소를米
개가진벡터입니다。b
를행벡터로전달하면솔버는내부적으로b
를 열 벡터b (:)
으로변환합니다。대규모문제의경우,b
를희소벡터로전달하십시오。
b
는다음과같이米
개의선형부등식을코딩합니다。
A*x <= b
,
여기서x
는N
개의 변수x (:)
으로구성된열벡터이고,一个
는 크기가米
×N
행렬입니다。
예를들어,다음부등식을살펴보겠습니다。
x1+ 2倍2≤10
3 x1+ 4 x2≤20
5倍1+ 6 x2≤30。
다음제약조건을입력하여부등식을지정합니다。
A = [1,2;3,4;5,6];B = [10;20;30];
예:X성분의합이1이하가되도록지정하려면A = ones(1,N)
및B = 1
을사용하십시오。
데이터형:双
Aeq
- - - - - -선형등식제약조건선형등식제약조건으로,실수행렬로지정됩니다。Aeq
는我
×N
행렬입니다。여기서我
는부등식개수이고N
은변수개수(x0
의소개수)입니다。대규모문제의경우,Aeq
를희소행렬로전달하십시오。
Aeq
는다음과같이我
개의선형등식을코딩합니다。
Aeq*x = beq
,
여기서x
는N
개의 변수x (:)
으로구성된열벡터이고,说真的
는我
개의소를갖는열벡터입니다。
예를들어다음을지정하려면
x1+ 2倍2+ 3 x3.= 10
2 x1+ 4 x2+ x3.= 20,
다음제약조건을입력해야합니다。
Aeq = [1,2,3;2,4,1];Beq = [10;20];
예:X성분의합이1이되도록지정하려면Aeq = ones(1,N)
및Beq = 1
을사용하십시오。
데이터형:双
说真的
- - - - - -선형등식제약조건선형등식제약조건으로,실수벡터로지정됩니다。说真的
는Aeq
행렬과관련된,소를我
개가진벡터입니다。说真的
를행벡터로전달하면솔버는내부적으로说真的
를 열 벡터说真的(:)
으로변환합니다。대규모문제의경우,说真的
를희소벡터로전달하십시오。
说真的
는다음과같이我
개의선형등식을코딩합니다。
Aeq*x = beq
,
여기서x
는N
개의 변수x (:)
으로구성된열벡터이고,Aeq
는 크기가我
×N
행렬입니다。
예를들어,다음등식을살펴보겠습니다。
x1+ 2倍2+ 3 x3.= 10
2 x1+ 4 x2+ x3.= 20。
다음제약조건을입력하여등식을지정합니다。
Aeq = [1,2,3;2,4,1];Beq = [10;20];
예:X성분의합이1이되도록지정하려면Aeq = ones(1,N)
및Beq = 1
을사용하십시오。
데이터형:双
磅
- - - - - -하한하한으로,실수형벡터나실수형배열로지정됩니다。x0
의소개수가磅
의소개수와같은경우磅
는다음을지정합니다。
모든我
에 대해X (i) >= lb(i)
.
数值(lb) <数值(x0)
이면磅
는다음을지정합니다。
1 <= I <= number (lb)
에 대해X (i) >= lb(i)
.
磅
의소개수가x0
의소개수보다적으면솔버는경고를발생시킵니다。
예:모든x성분이양수가되도록지정하려면Lb = 0 (size(x0))
을사용하십시오。
데이터형:双
乌兰巴托
- - - - - -상한상한으로,실수형벡터나실수형배열로지정됩니다。x0
의소개수가乌兰巴托
의소개수와같은경우乌兰巴托
는다음을지정합니다。
모든我
에 대해X (i) <= ub(i)
.
Numel (ub) < Numel (x0)
이면乌兰巴托
는다음을지정합니다。
1 <= I <= numel(ub)
에 대해X (i) <= ub(i)
.
乌兰巴托
의소개수가x0
의소개수보다적으면솔버는경고를발생시킵니다。
예:모든x성분이1보다작도록지정하려면Ub = ones(size(x0))
을사용하십시오。
데이터형:双
nonlcon
- - - - - -비선형제약조건비선형제약조건으로,함수핸들또는함수이름으로지정됩니다。nonlcon
은벡터또는배열x
를받고두개의배열c (x)
와量表(x)
를반환하는함수입니다。
c (x)
는x
의비선형부등식제약조건으로구성된배열입니다。fmincon
은다음을충족하려고시도합니다。
모든c
소에대해C (x) <= 0
.
量表(x)
는x
의비선형등식제약조건으로구성된배열입니다。fmincon
은다음을충족하려고시도합니다。
모든量表信
소에대해Ceq (x) = 0
.
예를들면다음을입력합니다。
x = fmincon(@myfun,x0,A,b,Aeq,beq,lb,ub,@mycon)
여기서mycon
은다음과같은matlab함수입니다。
函数[c,ceq] = mycon(x) c =…计算x上的非线性不等式ceq =…计算x处的非线性等式。
SpecifyConstraintGradient
옵션이真正的
化学式경우options = optimoptions('fmincon',' specyconstraintgradient ',true)
nonlcon
은세번째출력수와네번째출력수로c (x)
의 기울기GC
와量表(x)
의 기울기GCeq
도반환해야합니다。GC
와GCeq
는희소또는조밀형식일수있습니다。GC
또는GCeq
가대규모이고0이아닌소가상대적으로적은경우이러한소를희소행렬로나타내면内点
알고리즘에서실행시간과메모리를절약할수있습니다。자세한내용은비선형제약조건항목을참조하십시오。
데이터형:字符
|function_handle
|字符串
选项
- - - - - -최적화옵션optimoptions
의 출력값|optimset
등이반환하는구조체최적화옵션으로,optimoptions
의출력값또는optimset
등이반환하는구조체로지정됩니다。
옵션에따라모든알고리즘에적용되는옵션이있고특정알고리즘에만유효한옵션이있습니다。자세한내용은최적화옵션참조항목을참조하십시오。
일부옵션은optimoptions
시에나타나지않습니다。이러한옵션은다음` ` `에서기울임꼴로` ` ` `시되어있습니다。자세한내용은옵션 보기항목을참조하십시오。
모든알고리즘 | |
算法 |
다음최적화알고리즘을선택합니다。
알고리즘을선택하는방법에대한자세한내용은알고리즘선택하기항목을참조하십시오。
|
CheckGradients |
사용자제공도함수(목적함수또는제약조건의기울기)를유한차분도함수와비교합니다。
|
ConstraintTolerance |
제약조건위반에대한허용오차로,양의스칼라입니다。디폴트값은
|
诊断 | 최소화하거나풀려는함수에대한진단정보를@ @시합니다。 |
DiffMaxChange | 유한차분기울기에대한변수의최대변화량입니다(양의스칼라)。디폴트값은 |
DiffMinChange | 유한차분기울기에대한변수의최소변화량입니다(양의스칼라)。디폴트값은 |
显示 |
시수준입니다(반복과정@ @시참조):
|
FiniteDifferenceStepSize |
유한차분에대한스칼라또는벡터스텝크기자입니다。
符号' (x) =符号(x) 입니다(단,符号' (0)= 1 임)。중심유한차분은다음과같습니다。
FiniteDifferenceStepSize 는벡터로확장됩니다。디폴트값은전향유한차분의경우sqrt (eps) 이고중심유한차분의경우eps ^ (1/3) 입니다。
|
FiniteDifferenceType |
기울기를추정하는데사용되는유한차분으로,
|
FunValCheck | 목적함수값이유효한지여부를확합니다。디폴트설정 |
MaxFunctionEvaluations |
허용되는최대함수실행횟수로,양의정수입니다。
|
MaxIterations |
허용되는최대반복횟수로,양의정수입니다。
|
OptimalityTolerance |
1차최적성에대한종료허용오차입니다(양의스칼라)。디폴트값은
|
OutputFcn |
각반복마다최적화함수가호출하는하나이상의사용자정의함수를지정합니다。함수핸들또는함수핸들셀형배열을전달합니다。디폴트값은없음( |
PlotFcn |
알고리즘이실행되는동다양한진행률측정값을플로팅합니다。미리정의된플롯에서선택하거나사용자가직접작성할수있습니다。내장플롯함수이름,함수핸들또는내장플롯함수이름이나함수핸들로구성된셀형배열을전달하십시오。사용자지정플롯함수의경우,함수핸들을전달하십시오。디폴트값은없음(
사용자지정플롯함수는출력함수와동일한구문을사용합니다。优化工具箱的输出函数항목과输出函数和图函数语法항목을참조하십시오。
|
SpecifyConstraintGradient |
사용자가정의하는비선형제약조건함수의기울기입니다。디폴트 값
|
SpecifyObjectiveGradient |
사용자가정의하는목적함수의기울기입니다。
|
StepTolerance |
|
TypicalX |
일반적iot
|
UseParallel |
|
信任区域反射알고리즘 | |
FunctionTolerance |
함수값에대한종료허용오차로,양의스칼라입니다。디폴트값은
|
HessianFcn |
|
HessianMultiplyFcn |
헤세행렬의곱셈함수로,함수핸들로지정됩니다。특정구조를가진대규모문제의경우,이함수는 W = hmfun(Hinfo,Y) 여기서 첫번째수는목적함수 [f,g,Hinfo] = fun(x)
참고
헤세행렬의곱셈함수항목을참조하십시오。이에대한예제는密结构黑森最小化,线性等式항목을참조하십시오。
|
HessPattern | 유한차분에대한헤세행렬의희소성패턴입니다。∂2
구조를알수없는경우 |
MaxPCGIter | 최대선조건적용켤레기울기(pcg)반복횟수로,양의스칼라입니다。디폴트값은범위제약조건이있는문제의경우 |
PrecondBandWidth | Pcg에대한선조건자의상부대역폭으로,음이아닌정수입니다。기본적으로,대각선조건지정이사용됩니다(상부대역폭:0)。일부문제에서는대역폭을늘리면PCG반복횟수가줄어듭니다。 |
SubproblemAlgorithm |
반복스텝이계산되는방식을결정합니다。디폴트 값 |
TolPCG | PCG반복에대한종료허용오차로,양의스칼라입니다。디폴트값은 |
Active-Set알고리즘 | |
FunctionTolerance |
함수값에대한종료허용오차로,양의스칼라입니다。디폴트값은
|
MaxSQPIter | 허용되는최대SQP반복횟수로,양의정수입니다。디폴트값은 |
RelLineSrchBnd | 직선탐색스텝길이에대한상대적범위입니다(음이아닌실수스칼라값)。X의총변위는|Δx(我)|≤relLineSrchBnd·马克斯(| x(我)| | typicalx(我)|)을충족합니다。이옵션을사용하면솔버가너무크다고여겨지는스텝을실행하는경우x에의변위크기를제어할수있습니다。디폴트값은범위없음( |
RelLineSrchBndDuration |
|
TolConSQP | 내부반복SQP제약조건위반에대한종료허용오차로,양의스칼라입니다。디폴트값은 |
内点알고리즘 | |
BarrierParamUpdate |
이선택은솔버의속도와수렴에영향을줄수있지만,그영향을예측하기가쉽지않습니다。 |
HessianApproximation |
참고
|
HessianFcn |
|
HessianMultiplyFcn |
헤세행렬과벡터의곱을제공하는사용자제공함수입니다(헤세행렬의곱셈함수참조)。함수핸들을전달합니다。 참고
|
HonorBounds |
디폴트 값
|
InitBarrierParam | 초기장벽값으로,양의스칼라입니다。경우에따라디폴트값 |
InitTrustRegionRadius | 신뢰역의초기반지름으로,양의스칼라입니다。준특이행렬(缩放严重)문제에서는디폴트값 보다작은값을선택하는것이도움이될수있습니다。여기서n은변수의개수입니다。 |
MaxProjCGIter | 투영된켤레기울기반복횟수에대한허용오차(중지기준)로,이는알고리즘의반복횟수가아니라내부반복횟수입니다。이양의정수의디폴트값은 |
ObjectiveLimit |
허용오차(중지기준)로,스칼라입니다。목적함수값이 |
ScaleProblem |
|
SubproblemAlgorithm |
반복스텝이계산되는방식을결정합니다。디폴트 값 |
TolProjCG | 투영된켤레기울기알고리즘에대한상대허용오차(중지기준)로,이는알고리즘반복이아니라내부반복에대한것입니다。이양의스칼라의디폴트값은 |
TolProjCGAbs | 투영된켤레기울기알고리즘에대한절대허용오차(중지기준)로,이는알고리즘반복이아니라내부반복에대한것입니다。이양의스칼라의디폴트값은 |
SQP알고리즘과SQP Legacy알고리즘 | |
ObjectiveLimit |
허용오차(중지기준)로,스칼라입니다。목적함수값이 |
ScaleProblem |
|
예:options = optimoptions('fmincon',' specyobjectivegradient ',true,' specyconstraintgradient ',true)
问题
- - - - - -문제구조체문제구조체로,다음필드를가진구조체로지정됩니다。
필드 이름 | 항목 |
---|---|
|
목적 함수 |
|
x 의 초기점 |
|
선형부등식제약조건에대한행렬 |
|
선형부등식제약조건에대한벡터 |
|
선형등식제약조건에대한행렬 |
|
선형등식제약조건에대한벡터 |
磅 |
하한으로구성된벡터 |
乌兰巴托 |
상한으로구성된벡터 |
|
비선형제약조건함수 |
|
“fmincon” |
|
optimoptions 로생성되는옵션 |
问题
구조체에적어도客观的
,x0
,解算器
,选项
필드는반드시제공해야합니다。
데이터형:结构体
fval
-해에서계산된목적함수값해에서계산된목적함수값으로,실수로반환됩니다。일반적으로fval
=有趣的(x)
입니다。
exitflag
- - - - - -fmincon
가중지된이유fmincon
가중지된이유로,정수로반환됩니다。
모든알고리즘: |
|
|
1차최적성측정값이 |
|
반복횟수가 |
|
출력함수나플롯함수에의해중지되었습니다。 |
|
실현가능점을찾을수없습니다。 |
|
|
|
|
|
|
|
목적함수값의변화량이 |
|
|
|
탐색방향의크기가2* . |
|
탐색방향에서방향도함수의크기가2* . |
|
|
|
현재반복에서목적함수가 |
输出
-최적화과정에대한정보최적화과정에대한정보로,다음필드를가진구조체로반환됩니다。
迭代 |
수행된반복횟수 |
funcCount |
함수실행횟수 |
lssteplength |
탐색방향을기준으로한직선탐색스텝의크기( |
constrviolation |
제약조건함수의최댓값 |
stepsize |
|
算法 |
사용된최적화알고리즘 |
cgiterations |
총PCG반복횟수( |
firstorderopt |
1차최적성에대한측정값 |
bestfeasible |
최상의(가장낮은목적함수)실현가능점을발견했습니다。다음필드를포함한구조체:
실현가능점을찾지못한경우
|
消息 |
종료메시지 |
研究生
-해에서의기울기해에서의기울기로,실수벡터로반환됩니다。研究生
는점x (:)
에서有趣的
의기울기를제공합니다。
黑森
-근사헤세행렬근사헤세행렬로,실수행렬로반환됩니다。黑森
의 의미는헤세행렬출력값항목을참조하십시오。
fmincon
은목적함수와제약조건함수가모두연속이고연1계속도함수를갖는문제에동작하도록설계된기울기기반방법입니다。
“trust-region-reflective”
알고리즘을사용하는경우有趣的
에기울기를제공하고“SpecifyObjectiveGradient”
옵션을真正的
로설정해야합니다。
“trust-region-reflective”
알고리즘은서로동일한상한과하한을허용하지않습니다。예를들어,磅(2)= =乌兰巴托(2)
이면fmincon
은다음오류를@ @시합니다。
信任区域反射算法不允许上下界相等。可以使用内点算法或SQP算法。
헤세행렬과HessianMultiplyFcn
함수를전달하는구문은각각두개씩있습니다。하나는trust-region-reflective
에대한것이고,다른하나는内点
에대한것입니다。헤세행렬포함시키기항목을참조하십시오。
trust-region-reflective
의경우,라그랑주의헤세행렬이목적함수의헤세행렬과같습니다。이헤세행렬은목적함수의세번째출력값으로전달해야합니다。
内点
의경우,라그랑주의헤세행렬에비선형제약조건함수의헤세행렬과라그랑주승수가포함됩니다。헤세행렬은현재점x
와라그랑주승수구조체λ
모두를고려하는개별함수로전달해야합니다。
문제가실현가능하지않을경우,fmincon
은최대제약조건값을최소화하려고시도합니다。
fmincon
은헤세행렬을선택적입력값으로사용합니다。이헤세행렬은라그랑주의2계도함수로구성된행렬(수식1참조),즉다음과같습니다。
(1) |
헤세행렬을trust-region-reflective
알고리즘또는内点
알고리즘에제공하는방법에대한자세한내용은헤세행렬포함시키기항목을참조하십시오。
有效集
알고리즘과sqp
알고리즘은입력값헤세행렬을받지않습니다。이알고리즘은라그랑주의헤세행렬에대한준뉴턴근삿값을계산합니다。
内点
알고리즘에는다음과같이“HessianApproximation”
옵션에대해선택할수있는값이여러개있습니다(Fmincon의内部点에대한입력값으로헤세행렬근삿값선택하기참조)。
“蓄热”
- - - - - -fmincon
은조밀한준뉴턴근사로헤세행렬을계산합니다。이는디폴트헤세행렬근사입니다。
“lbfgs”
- - - - - -fmincon
은기억용량을제한한대규모준뉴턴근사로헤세행렬을계산합니다。기억할수있는반복횟수의디폴트값은10회입니다。
{“lbfgs”,正整数}
- - - - - -fmincon
은기억용량을제한한대규모준뉴턴근사로헤세행렬을계산합니다。양의정수는얼마나많은이전반복이기억되어야하는지를지정합니다。
有限差分的
- - - - - -fmincon
은기울기의유한차분으로헤세행렬과벡터의곱을계산합니다。목적함수의기울기는물론,비선형제약조건의기울기(존재하는경우)도제공해야합니다。“SpecifyObjectiveGradient”
옵션을真正的
로설정하고,해당하는경우“SpecifyConstraintGradient”
옵션을真正的
로설정하십시오。“SubproblemAlgorithm”
은“重心”
로설정해야합니다。
内点
알고리즘과trust-region-reflective
알고리즘을사용하면헤세행렬의곱셈함수를제공할수있습니다。이함수는헤세행렬을직접계산하지않고헤세행렬과벡터의곱에대한결과를구해줍니다。따라서메모리를절약할수있습니다。자세한내용은헤세행렬의곱셈함수항목을참조하십시오。
알고리즘을선택하는데도움을받으려면Fmincon알고리즘항목을참조하십시오。알고리즘을설정하려면optimoptions
를사용하여选项
를 만들고“算法”
이름-값쌍을사용하십시오。
이섹션의나머지부분에서는각알고리즘에대한정보를가리키는포인터또는간단한개요를제공합니다。
이알고리즘은fmincon의内部点알고리즘에설명되어있습니다。[1],[41],[9]에더자세한설명이나와있습니다。
fmincon
의“sqp”
알고리즘과“sqp-legacy”
알고리즘은Active-Set최적화에설명되어있는“激活集”
알고리즘과유사합니다。주차이점에대한설명은fmincon의SQP알고리즘에나와있습니다。이러한차이점을약하자면다음과같습니다。
“trust-region-reflective”
알고리즘은부분공간信赖域방법이며interior-reflective뉴턴방법([3]및[4]에설명되어있음)을기반으로합니다。각반복에는선조건적용켤레기울기(PCG)방법을사용한대규모선형시스템의근사해풀이작업이포함됩니다。信任区域방법과선조건적용켤레기울기방법에대한설명은fmincon의信任区域反射알고리즘에서확할수있습니다。
최적화라이브편집기작업은fmincon
에대한시각적터페이스를제공합니다。
伯德,R. H., J. C.吉尔伯特,J.诺西德尔。非线性规划中基于内点技术的信赖域方法。《数学规划》,第89卷,第1期,2000年,149-185页。
[2]伯德,R. H.,玛丽E.赫里巴尔,豪尔赫·诺西德尔。大规模非线性规划的内点算法SIAM期刊优化,Vol 9, No. 4, 1999, pp. 877-900。
[3] Coleman, t.f., Li Y.。有边界的非线性极小化的内部信赖域方法。优化学报,Vol. 6, 1996, pp. 418-445。
[4] Coleman, t.f., Li Y.。大尺度非线性有界极小化问题的反射牛顿方法的收敛性数学规划,第67卷,第2期,1994年,第189-224页。
[5]吉尔,p.e., W.默里和M. H.赖特。《实用优化》,伦敦,学术出版社,1981年。
[6] Han s.p.,“非线性规划的一种全局收敛方法”。优化理论与应用,Vol. 22, 1977, pp. 297。
[7] Powell m.j. D. <非线性约束优化计算的快速算法>。数值分析,编。G. A.沃森,数学讲稿,施普林格出版社,卷630,1978。
[8] Powell, m.j. D. <非线性约束优化计算的变度量方法的收敛性>。非线性规划3 (O. L. Mangasarian, R. R. Meyer和S. M. Robinson主编),学术出版社,1978。
华尔兹,R. A., J. L.莫拉莱斯,J.诺西德尔和D.欧尔班。一种结合了直线搜索和信赖域步骤的非线性优化内部算法。数学规划,Vol 107, No. 3, 2006, pp. 391-408。
사용법관련참고및제한사항:
fmincon
은codegen
(MATLAB编码器)함수 또는MATLAB编码器™앱을사용한코드생성을지원합니다。코드를생성하려면MATLAB编码器라이선스가있어야합니다。
타깃하드웨어는@ @준배정밀도부동소수점계산을지원해야합니다。단정밀도또는고정소수점계산에대해서는코드를생성할수없습니다。
코드생성대상은matlab솔버와동일한수학커널라이브러리를사용하지않습니다。따라서특히조건이나쁜문제경우에코드생성의해가솔버의해와다를수있습니다。
생성을위한모든코드는matlab코드여야합니다。구체적으로,사용자지정블랙박스함수는fmincon
에대한목적함수로사용할수없습니다。C또는c++에서코딩된사용자지정함수는coder.ceval
을사용하여실행할수있습니다。단,사용자지정함수를matlab함수내부에서호출해야합니다。
fmincon
은코드생성시问题
수를지원하지않습니다。
[x,fval] = fmincon(问题)%不支持万博1manbetx
목적함수와비선형제약조건이있는함수를지정할때는문자열이나문자이름이아니라함수핸들을사용해야합니다。
x = fmincon(@fun,x0,A,b,Aeq,beq,lb,ub,@nonlcon)%的万博1manbetx支持%不支持:f万博1manbetxmincon(‘有趣的’,…)或fmincon(“有趣”,…)
一个
,Aeq
,磅
,乌兰巴托
같은fmincon
입력행렬은모두희소행렬이아니라비희소행렬이어야합니다。完整的
함수를사용하여희소행렬을비희소행렬로변환할수있습니다。
磅
化学式수와乌兰巴托
化学式수는x0
수와동일한개수의소를가지거나비어있어야합니다([]
).
임베디드프로세서가사용되는고급코드최적화의경우에는嵌入式编码器®라이선스도필합니다。
fmincon
에대한옵션을포함하고optimoptions
를사용하여옵션을지정해야합니다。옵션에는“sqp”
또는“sqp-legacy”
로 설정된算法
옵션이포함되어야합니다。
选项= optimoptions(“fmincon”,“算法”,“sqp”);[x,fval,exitflag] = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options);
코드생성에지원되는옵션은다음과같습니다。
算法
- - - - - -“sqp”
또는“sqp-legacy”
여야 함
ConstraintTolerance
FiniteDifferenceStepSize
FiniteDifferenceType
MaxFunctionEvaluations
MaxIterations
ObjectiveLimit
OptimalityTolerance
ScaleProblem
SpecifyConstraintGradient
SpecifyObjectiveGradient
StepTolerance
TypicalX
생성된코드는옵션에대해제한적오류검사를수행합니다。옵션을업데이트할때권장하는방법은점@ @기법이아니라optimoptions
를사용하는것입니다。
Opts = optimoptions(“fmincon”,“算法”,“sqp”);Opts = optimoptions(Opts,“MaxIterations”1 e4);%推荐选择。米axIterations = 1e4;%不推荐
파일에서옵션을불러오지마십시오。파일에서불러오면코드생성이실패할수있습니다。대신코드에서옵션을만드십시오。
일반적으로,지원되지않는옵션을지정하면코드생성시에해당옵션이별다른표시없이무시됩니다。그러나점표기법을사용하여플롯함수또는출력함수를지정하면코드생성에서오류가발생할수있습니다。정적코드생성을위해지원되는옵션만지정하십시오。
출력함수와플롯함수는지원되지않으므로fmincon
은종료플래그-1을반환하지않습니다。
fmincon
에서생성된코드에는반환된输出
구조체에bestfeasible
필드가포함되지않습니다。
예제는优化基础代码生成항목을참조하십시오。
병렬로실행하려면“UseParallel”
옵션을真正的
로설정하십시오。
Options = optimoptions('
solvername
”、“UseParallel’,真的)
자세한내용은在优化工具箱中使用并行计算항목을참조하십시오。
다음matlab명령에해당하는링크를클릭했습니다。
명령을실행하려면matlab명령창에입력하십시오。웹브라우저는matlab명령을지원하지않습니다。
您也可以从以下列表中选择一个网站:
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。