主要内容

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

fmincon

제약조건이있는비선형다변수함수의최솟값구하기

설명

비선형계획법솔버입니다。

다음으로지정된문제의최솟값을구합니다。

最小值 x f x 这样 c x 0 c e x 0 一个 x b 一个 e x b e l b x u b

, b와beq는벡터이고와Aeq는행렬이고,c (x)测查와(x)는벡터를반환하는함수이고,f (x)는스칼라를반환하는함수입니다。F (x) c(x) ceq(x)는비선형함수일수있습니다。

X, lb, ub는벡터또는행렬로전달될수있습니다。행렬marketing수항목을참조하십시오。

예제

x= fmincon (有趣的x0一个bx0에서시작하여有趣的에정의된함수의최소점x를구하려고시도합니다。여기에는선형부등식A*x≤b이적용됩니다。x0은스칼라,벡터또는행렬일수있습니다。

참고

추가파라미터전달하기에는필요한경우추가파라미터를목적함수와비선형제약조건함수에전달하는방법이설명되어있습니다。

예제

x= fmincon (有趣的x0一个bAeq说真的有趣的을최소화합니다。여기에는선형등식Aeq*x = beqA*x≤b이적용됩니다。부등식이존재하지않는경우A = []B = []을설정하십시오。

예제

x= fmincon (有趣的x0一个bAeq说真的乌兰巴托는해가항상범위x乌兰巴托내에있도록x의설계변수에대한하한및상한집합을정의합니다。등식이존재하지않는경우Aeq = []Beq = []을설정하십시오。x(我)의하한이비유계경우lb(i) = -无穷大를설정하고,x(我)의상한이비유계경우ub(i) =无穷大를설정하십시오。

참고

문제에대해지정된입력값범위에모순이있는경우fmincon은오류를발생시킵니다。이경우,출력값xx0이 되고fval[]이됩니다。

디폴트“内点”알고리즘의경우fmincon은 범위Lb≤x≤ub을위반하거나범위의경계값과같은x0의성분을범위역의내부로설정합니다。“trust-region-reflective”알고리즘의경우fmincon은위반하는성분을범위역의내부로설정합니다。다른알고리즘의경우fmincon은위반하는성분을가장가까운범위경계로설정합니다。범위를준수하는성분은변경되지않습니다。迭代可能会违反约束항목을참조하십시오。

예제

x= fmincon (有趣的x0一个bAeq说真的乌兰巴托nonlconnonlcon에정의된비선형부등식c (x)또는 등식量表(x)를최소화에적용합니다。fminconC (x)≤0Ceq (x) = 0조건에서최적화합니다。범위가존재하지않는경우Lb = []및/또는Ub = []을설정하십시오。

예제

x= fmincon (有趣的x0一个bAeq说真的乌兰巴托nonlcon选项选项에지정된최적화옵션을사용하여최소화합니다。이옵션을설정하려면optimoptions를사용하십시오。비선형부등식또는등식제약조건이없을경우Nonlcon = []을설정하십시오。

예제

x= fmincon (问题问题에설명되어있는구조체问题의최솟값을구합니다。

예제

xfval= fmincon(___은모든구문에서해x에서의목적함수有趣的의값을반환합니다。

예제

xfvalexitflag输出= fmincon(___fmincon의종료상황을설명하는값exitflag와최적화과정에대한정보가포함된구조체输出을추가로반환합니다。

예제

xfvalexitflag输出λ研究生黑森= fmincon(___은추가로다음을반환합니다。

  • λ- - - - - -해x에서의라그랑주승수를포함하는필드를갖는구조체입니다。

  • 研究生- - - - - -해x에서의有趣的의기울기입니다。

  • 黑森- - - - - -해x에서의有趣的의헤세행렬입니다。Fmincon헤세행렬항목을참조하십시오。

예제

모두 축소

선형부등식제약조건이있는경우로젠브록함수(。函数)의최솟값을구합니다。

목적 함수有趣的을로젠브록함수로설정합니다。로젠브록함수는최소화하기어려운것으로잘알려져있습니다。이함수는점(1,1)에서최소목적함수값0을가집니다。자세한내용은제약조건이있는비선형문제풀기,솔버기반항목을참조하십시오。

趣味= @(x)100*(x(2)-x(1)^2)^2 + (1-x(1))^2;

x 1 + 2 x 2 1 을충족하도록규정하는제약조건이있는상태로점[1,2]에서시작하여최솟값을구합니다。A = [1,2]B = 1을사용하여Ax <= b형식으로이제약조건을나타냅니다。이제약조건은제약조건이없을때의해(1,1)은이문제의해가될수없음을의미합니다。그이유는이점에서는 x 1 + 2 x 2 3. > 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;

x 1 + 2 x 2 1 2 x 1 + x 2 1 을충족하도록규정하는제약조건이있는상태로점(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));

x x 1 1 x 2 2 를충족하는양수값을갖는역을살펴봅니다。

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;

$0 \le x(1) \le 0.5$$0.2 \le x(2) \le 0.8$을충족하는역내부를살펴봅니다。

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”);

단위 원판$||x||^2 \le 1$에대한로젠브록함수(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 (x) = 100{\离开({{x_2} - x_1 ^ 2} \右)^ 2}+ & # xA; {(1 - {x_1}) ^ 2}, $ $

기울기는다음과같습니다。

$ $ \微分算符左f (x) = \[{\开始{数组}{* {20}{c}} & # xA;{- 400 \离开({{x_2} - x_1 ^ 2} \右){x_1} - 2 \离开({1 - {x_1}} \右)}\ \ & # xA; {200 \ ({{x_2} - x_1 ^ 2} \右)}& # xA;结束\{数组}}\右]。$ $

函数[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출력값과输出출력값을청하면해의품질을손쉽게검토할수있습니다。

단위 원판$||x||^2 \le 1$에대해로젠브록함수(。函数)를최소화하는문제를설정합니다。먼저,비선형제약조건을나타내는함수를만듭니다。이함수를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];

fvalexitflag输出출력값을사용하여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]
  • exitflag1은해가국소최솟값이라는것을나타냅니다。

  • 输出구조체는풀이과정에대한여러통계량을보고합니다。특히,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헤세행렬에설명되어있습니다。

입력marketing수

모두 축소

최소화할함수로,함수핸들이나함수이름으로지정됩니다。有趣的은벡터또는배열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의소개수와이수의크기를사용하여有趣的이받는변수의개수와크기를확합니다。

  • “内点”알고리즘-HonorBounds옵션이真正的(디폴트값)경우,fmincon은범위경계또는乌兰巴托에있거나그외부에있는x0성분을범위내에엄밀히속하는값으로재설정합니다。

  • “trust-region-reflective”알고리즘-fmincon은실현가능하지않은x0성분을범위또는선형등식에대해실현가능하도록재설정합니다。

  • “sqp”“sqp-legacy”“激活集”알고리즘-fmincon은범위외부에있는x0성분을대응하는범위의값으로재설정합니다。

예:X0 = [1,2,3,4]

데이터형:

선형부등식제약조건으로,실수행렬로지정됩니다。一个×N행렬입니다。여기서은부등식개수이고N은변수개수(x0의소개수)입니다。대규모문제의경우,一个를희소행렬로전달하십시오。

一个는다음과같이개의선형부등식을코딩합니다。

A*x <= b

여기서xN개의 변수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는다음과같이개의선형부등식을코딩합니다。

A*x <= b

여기서xN개의 변수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×N행렬입니다。여기서는부등식개수이고N은변수개수(x0의소개수)입니다。대규모문제의경우,Aeq를희소행렬로전달하십시오。

Aeq는다음과같이개의선형등식을코딩합니다。

Aeq*x = beq

여기서xN개의 변수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

여기서xN개의 변수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은벡터또는배열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도반환해야합니다。GCGCeq는희소또는조밀형식일수있습니다。GC또는GCeq가대규모이고0이아닌소가상대적으로적은경우이러한소를희소행렬로나타내면内点알고리즘에서실행시간과메모리를절약할수있습니다。자세한내용은비선형제약조건항목을참조하십시오。

데이터형:字符|function_handle|字符串

최적화옵션으로,optimoptions의출력값또는optimset등이반환하는구조체로지정됩니다。

옵션에따라모든알고리즘에적용되는옵션이있고특정알고리즘에만유효한옵션이있습니다。자세한내용은최적화옵션참조항목을참조하십시오。

일부옵션은optimoptions시에나타나지않습니다。이러한옵션은다음` ` `에서기울임꼴로` ` ` `시되어있습니다。자세한내용은옵션 보기항목을참조하십시오。

모든알고리즘
算法

다음최적화알고리즘을선택합니다。

  • “内点”(디폴트값)

  • “trust-region-reflective”

  • “sqp”

  • “sqp-legacy”optimoptions만해당)

  • “激活集”

알고리즘을선택하는방법에대한자세한내용은알고리즘선택하기항목을참조하십시오。

trust-region-reflective알고리즘에는다음이필합니다。

  • 기울기。목적함수에제공되어야합니다。

  • SpecifyObjectiveGradient真正的로설정되어야합니다。

  • 범위제약조건및선형등식제약조건중하나

“trust-region-reflective”알고리즘을선택할때이러한조건이모두충족되지않을경우fmincon이오류를발생시킵니다。

“激活集”“sqp-legacy”“sqp”알고리즘은대규모알고리즘이아닙니다。대규모알고리즘과중간규모알고리즘비교항목을참조하십시오。

CheckGradients

사용자제공도함수(목적함수또는제약조건의기울기)를유한차분도함수와비교합니다。(디폴트값)또는真正的를선택할수있습니다。

optimset의경우,이이름은DerivativeCheck이고 값은“上”또는“关闭”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

ConstraintTolerance

제약조건위반에대한허용오차로,양의스칼라입니다。디폴트값은1 e-6입니다。허용오차와중지기준항목을참조하십시오。

optimset의경우,이이름은TolCon입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

诊断

최소화하거나풀려는함수에대한진단정보를@ @시합니다。“关闭”(디폴트값)또는“上”을선택할수있습니다。

DiffMaxChange

유한차분기울기에대한변수의최대변화량입니다(양의스칼라)。디폴트값은입니다。

DiffMinChange

유한차분기울기에대한변수의최소변화량입니다(양의스칼라)。디폴트값은0입니다。

显示

시수준입니다(반복과정@ @시참조):

  • “关闭”또는“没有”은출력값을@ @시하지않습니다。

  • “通路”는각반복마다출력값을@ @시하고디폴트종료메시지를제공합니다。

  • “iter-detailed”는각반복마다출력값을시하고기술적종료메시지를제공합니다。

  • “通知”는함수가수렴하지않는경우에만출력값을@ @시하고디폴트종료메시지를제공합니다。

  • “notify-detailed”는함수가수렴하지않는경우에만출력값을시하고기술적종료메시지를제공합니다。

  • “最后一次”(디폴트값)은최종출력값만` ` `시하고디폴트종료메시지를제공합니다。

  • 最后详细的는최종출력값만시하고기술적종료메시지를제공합니다。

FiniteDifferenceStepSize

유한차분에대한스칼라또는벡터스텝크기자입니다。FiniteDifferenceStepSize를 벡터v로설정하는경우전향유한차분δ는다음과같습니다。

delta = v *符号' (x).*max(abs(x),TypicalX);

여기서符号' (x) =符号(x)입니다(단,符号' (0)= 1임)。중심유한차분은다음과같습니다。

delta = v.*max(abs(x),TypicalX);

스칼라FiniteDifferenceStepSize는벡터로확장됩니다。디폴트값은전향유한차분의경우sqrt (eps)이고중심유한차분의경우eps ^ (1/3)입니다。

optimset의경우,이이름은FinDiffRelStep입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

FiniteDifferenceType

기울기를추정하는데사용되는유한차분으로,“前进”(디폴트값)또는“中央”(중심화됨)입니다。“中央”은함수실행횟수가2배더많지만더정확합니다。信任区域反射알고리즘은CheckGradients真正的로설정된경우에만FiniteDifferenceType을사용합니다。

fmincon은두유형의유한차분을모두추정하는경우범위를준수하려고노력합니다。예를들어,범위외부에있는점에서실행되는것을방지하기위해전향차분이아니라후향차분을사용할수있습니다。하지만,内点알고리즘에서는HonorBounds옵션이로설정된경우“中央”차분이실행도중범위를위반할수있습니다。

optimset의경우,이이름은FinDiffType입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

FunValCheck

목적함수값이유효한지여부를확합니다。디폴트설정“关闭”는검사를수행하지않습니다。“上”설정은목적함수가复杂的또는값을반환하는경우에오류를@ @시합니다。

MaxFunctionEvaluations

허용되는최대함수실행횟수로,양의정수입니다。内点를제외한모든알고리즘의경우디폴트값은100 * numberOfVariables입니다。内点알고리즘의경우디폴트값은3000입니다。허용오차와중지기준항목과반복횟수와함수실행횟수항목을참조하십시오。

optimset의경우,이이름은MaxFunEvals입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

MaxIterations

허용되는최대반복횟수로,양의정수입니다。内点를제외한모든알고리즘의경우디폴트값은400입니다。内点알고리즘의경우디폴트값은1000입니다。허용오차와중지기준항목과반복횟수와함수실행횟수항목을참조하십시오。

optimset의경우,이이름은麦克斯特입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

OptimalityTolerance

1차최적성에대한종료허용오차입니다(양의스칼라)。디폴트값은1 e-6입니다。1차최적성측정값항목을참조하십시오。

optimset의경우,이이름은TolFun입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

OutputFcn

각반복마다최적화함수가호출하는하나이상의사용자정의함수를지정합니다。함수핸들또는함수핸들셀형배열을전달합니다。디폴트값은없음([])입니다。输出函数和图函数语法항목을참조하십시오。

PlotFcn

알고리즘이실행되는동다양한진행률측정값을플로팅합니다。미리정의된플롯에서선택하거나사용자가직접작성할수있습니다。내장플롯함수이름,함수핸들또는내장플롯함수이름이나함수핸들로구성된셀형배열을전달하십시오。사용자지정플롯함수의경우,함수핸들을전달하십시오。디폴트값은없음([])입니다。

  • “optimplotx”는현재점을플로팅합니다。

  • “optimplotfunccount”는함수실행횟수를플로팅합니다。

  • “optimplotfval”은함수값을플로팅합니다。

  • “optimplotfvalconstr”은발견된최적의실현가능목적함수값을선플롯으로플로팅합니다。플롯은1 e-6의실현가능성허용오차를사용하여실현불가능점을빨간색으로표시하고,실현가능점을파란색으로표시합니다。

  • “optimplotconstrviolation”은최대제약조건위반값을플로팅합니다。

  • “optimplotstepsize”는스텝크기를플로팅합니다。

  • “optimplotfirstorderopt”는1차최적성측정값을플로팅합니다。

사용자지정플롯함수는출력함수와동일한구문을사용합니다。优化工具箱的输出函数항목과输出函数和图函数语法항목을참조하십시오。

optimset의경우,이이름은PlotFcns입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

SpecifyConstraintGradient

사용자가정의하는비선형제약조건함수의기울기입니다。디폴트 값로설정된경우,fmincon은유한차분으로비선형제약조건의기울기를추정합니다。真正的로설정된경우,fmincon에서제약조건함수가4개의출력값을가져야합니다。이에대한설명은nonlcon에나와있습니다。trust-region-reflective알고리즘은비선형제약조건을받지않습니다。

optimset의경우,이이름은GradConstr이고 값은“上”또는“关闭”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

SpecifyObjectiveGradient

사용자가정의하는목적함수의기울기입니다。有趣的에기울기를정의하는방법을보려면有趣的에대한설명을참조하십시오。디폴트 값를설정하면fmincon이유한차분을사용하여기울기를추정합니다。fmincon이목적함수에대한사용자정의기울기를사용하도록하려면真正的로설정하십시오。“trust-region-reflective”알고리즘을사용하려면기울기를제공하고SpecifyObjectiveGradient真正的로설정해야합니다。

optimset의경우,이이름은GradObj이고 값은“上”또는“关闭”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

StepTolerance

x에대한종료허용오차로,양의스칼라입니다。“内点”를제외한모든알고리즘의경우디폴트값은1 e-6입니다。“内点”알고리즘의경우디폴트값은1平台以及입니다。허용오차와중지기준항목을참조하십시오。

optimset의경우,이이름은TolX입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

TypicalX

일반적iotx값입니다。TypicalX의소개수는시작점x0의소개수와같습니다。디폴트값은的(numberofvariables, 1)입니다。fmincon은기울기추정을위해유한차분을스케일링하는데TypicalX를사용합니다。

“trust-region-reflective”알고리즘은CheckGradients옵션에대해서만TypicalX를사용합니다。

UseParallel

真正的化学式경우fmincon은기울기를병렬로추정합니다。디폴트 값로설정하면비활성화됩니다。trust-region-reflective에서는목적함수에기울기를제공해야하므로,UseParallel이적용되지않습니다。병렬 연산항목을참조하십시오。

信任区域反射알고리즘
FunctionTolerance

함수값에대한종료허용오차로,양의스칼라입니다。디폴트값은1 e-6입니다。허용오차와중지기준항목을참조하십시오。

optimset의경우,이이름은TolFun입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

HessianFcn

[](디폴트값)경우,fmincon은유한차분을사용하여헤세행렬의근삿값을계산하거나헤세행렬의곱셈함수를사용합니다(옵션HessianMultiplyFcn사용)。“目标”경우,fmincon은사용자정의헤세행렬(有趣的에서정의됨)을사용합니다。입력값헤세행렬항목을참조하십시오。

optimset의경우,이이름은HessFcn입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

HessianMultiplyFcn

헤세행렬의곱셈함수로,함수핸들로지정됩니다。특정구조를가진대규모문제의경우,이함수는H를실제로구성하지않고헤세행렬곱H * Y를계산합니다。이함수의형식은다음과같습니다。

W = hmfun(Hinfo,Y)

여기서HinfoH * Y를계산하는데사용되는행렬을포함합니다。

첫번째수는목적함수有趣的이반환하는세번째수와같습니다。예를들어다음과같습니다。

[f,g,Hinfo] = fun(x)

Y는문제의차원과동일한개수의행을갖는행렬입니다。행렬W = h * y입니다。단,H가명시적으로구성되지는않습니다。fminconHinfo를사용하여선조건자를계산합니다。hmfun에필한추가파라미터의값을제공하는방법에대한자세한내용은추가파라미터전달하기항목을참조하십시오。

참고

HessianMultiplyFcn옵션을사용하려면HessianFcn[]로설정되어야하고,SubproblemAlgorithm“重心”(디폴트값)여야합니다。

헤세행렬의곱셈함수항목을참조하십시오。이에대한예제는密结构黑森最小化,线性等式항목을참조하십시오。

optimset의경우,이이름은HessMult입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

HessPattern

유한차분에대한헤세행렬의희소성패턴입니다。∂2有趣的/∂x(我)x (j)≠0이성립하는경우hespattern (i,j) = 1을설정합니다。그렇지않은경우hespattern (i,j) = 0을설정합니다。

HessPattern有趣的의헤세행렬H를계산하는것이번거롭고有趣的의기울기의번째성분이x (j)에종속된다는사실은(조사를통해)확할수있는경우에사용합니다。H희소성구조HessPattern의값으로제공하는경우fmincon은(기울기의)희소유한차분을통해H의근삿값을계산할수있습니다。다시말해서0이아닌성분의위치를제공합니다。

구조를알수없는경우HessPattern을설정하지마십시오。이경우기본적으로HessPattern이1로구성된조밀행렬것처럼동작합니다。그러면fmincon이각반복마다비희소유한차분근삿값을계산합니다。이계산과정은대규모문제의경우시간이아주오래걸릴수있으므로보통은희소성구조를확인하는것이더바람직합니다。

MaxPCGIter

최대선조건적용켤레기울기(pcg)반복횟수로,양의스칼라입니다。디폴트값은범위제약조건이있는문제의경우马克斯(1楼(numberOfVariables / 2))이고,등식제약조건이있는문제의경우numberOfVariables입니다。자세한내용은선조건적용켤레기울기법(预条件共轭梯度法)항목을참조하십시오。

PrecondBandWidth

Pcg에대한선조건자의상부대역폭으로,음이아닌정수입니다。기본적으로,대각선조건지정이사용됩니다(상부대역폭:0)。일부문제에서는대역폭을늘리면PCG반복횟수가줄어듭니다。PrecondBandWidth로설정하면켤레기울기(cg)가아닌직접분해(촐레스키)가사용됩니다。직접분해는CG보다계산량이더많지만해에다가가는데있어더나은품질의스텝을생성합니다。

SubproblemAlgorithm

반복스텝이계산되는방식을결정합니다。디폴트 값“重心”“分解”보다더빠르지만정확도가떨어지는스텝을실행합니다。fmincon의信任区域反射알고리즘항목을참조하십시오。

TolPCG

PCG반복에대한종료허용오차로,양의스칼라입니다。디폴트값은0.1입니다。

Active-Set알고리즘
FunctionTolerance

함수값에대한종료허용오차로,양의스칼라입니다。디폴트값은1 e-6입니다。허용오차와중지기준항목을참조하십시오。

optimset의경우,이이름은TolFun입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

MaxSQPIter

허용되는최대SQP반복횟수로,양의정수입니다。디폴트값은10*max(numberOfVariables, numberOfInequalities + numberOfBounds)입니다。

RelLineSrchBnd

직선탐색스텝길이에대한상대적범위입니다(음이아닌실수스칼라값)。X의총변위는|Δx(我)|≤relLineSrchBnd·马克斯(| x(我)| | typicalx(我)|)을충족합니다。이옵션을사용하면솔버가너무크다고여겨지는스텝을실행하는경우x에의변위크기를제어할수있습니다。디폴트값은범위없음([])입니다。

RelLineSrchBndDuration

RelLineSrchBnd에지정된경계가활성상태로유지되는반복횟수입니다(디폴트값은1임)。

TolConSQP

내부반복SQP제약조건위반에대한종료허용오차로,양의스칼라입니다。디폴트값은1 e-6입니다。

内点알고리즘
BarrierParamUpdate

fmincon이장벽파라미터를업데이트하는방법을선택합니다(fmincon의内部点알고리즘참조)。선택가능한설정은다음과같습니다。

  • “单调”(디폴트값)

  • 预估的

이선택은솔버의속도와수렴에영향을줄수있지만,그영향을예측하기가쉽지않습니다。

HessianApproximation

fmincon이헤세행렬을계산하는방법을선택합니다(입력값헤세행렬참조)。선택가능한설정은다음과같습니다。

  • “蓄热”(디폴트값)

  • 有限差分的

  • “lbfgs”

  • {“lbfgs”,正整数}

참고

HessianApproximation을사용하려면HessianFcnHessianMultiplyFcn이모두빈소([])여야합니다。

optimset의경우,이이름은黑森이고 값은用户提供的“蓄热”“lbfgs”“fin-diff-grads”“上”또는“关闭”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

HessianFcn

[](디폴트값)경우,fminconHessianApproximation에지정된방법을사용하여헤세행렬의근삿값을계산하거나제공된HessianMultiplyFcn을사용합니다。함수핸들marketing경우,fminconHessianFcn을사용하여헤세행렬을계산합니다。입력값헤세행렬항목을참조하십시오。

optimset의경우,이이름은HessFcn입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

HessianMultiplyFcn

헤세행렬과벡터의곱을제공하는사용자제공함수입니다(헤세행렬의곱셈함수참조)。함수핸들을전달합니다。

참고

HessianMultiplyFcn옵션을사용하려면HessianFcn[]로설정되어야하고,SubproblemAlgorithm“重心”여야합니다。

optimset의경우,이이름은HessMult입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

HonorBounds

디폴트 값真正的는범위제약조건이매반복마다충족되도록합니다。로설정하여비활성화할수있습니다。

optimset의경우,이이름은AlwaysHonorConstraints이고 값은“界限”또는“没有”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

InitBarrierParam

초기장벽값으로,양의스칼라입니다。경우에따라디폴트값0.1보다높은값을사용하는것이도움이될수있습니다。특히,목적함수또는제약조건의규모가큰경우그렇습니다。

InitTrustRegionRadius

신뢰역의초기반지름으로,양의스칼라입니다。준특이행렬(缩放严重)문제에서는디폴트값 n 보다작은값을선택하는것이도움이될수있습니다。여기서n은변수의개수입니다。

MaxProjCGIter

투영된켤레기울기반복횟수에대한허용오차(중지기준)로,이는알고리즘의반복횟수가아니라내부반복횟수입니다。이양의정수의디폴트값은2*(numberOfVariables - numberofetraits)입니다。

ObjectiveLimit

허용오차(중지기준)로,스칼라입니다。목적함수값이ObjectiveLimit아래로떨어지고반복이실현가능하면반복이중단됩니다。문제가비유계이기때문일수있습니다。디폴트값은1 e20입니다。

ScaleProblem

真正的로설정하면알고리즘이모든제약조건과목적함수를정규화합니다。디폴트 값로설정하면비활성화됩니다。

optimset의경우,값은“obj-and-constr”또는“没有”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

SubproblemAlgorithm

반복스텝이계산되는방식을결정합니다。디폴트 값“分解”은일반적으로“重心”(켤레기울기)보다빠릅니다。하지만조밀한헤세행렬이포함된대규모문제에서는“重心”가더빠를수도있습니다。fmincon의内部点알고리즘항목을참조하십시오。

TolProjCG

투영된켤레기울기알고리즘에대한상대허용오차(중지기준)로,이는알고리즘반복이아니라내부반복에대한것입니다。이양의스칼라의디폴트값은0.01입니다。

TolProjCGAbs

투영된켤레기울기알고리즘에대한절대허용오차(중지기준)로,이는알고리즘반복이아니라내부반복에대한것입니다。이양의스칼라의디폴트값은1平台以及입니다。

SQP알고리즘과SQP Legacy알고리즘
ObjectiveLimit

허용오차(중지기준)로,스칼라입니다。목적함수값이ObjectiveLimit아래로떨어지고반복이실현가능하면반복이중단됩니다。문제가비유계이기때문일수있습니다。디폴트값은1 e20입니다。

ScaleProblem

真正的로설정하면알고리즘이모든제약조건과목적함수를정규화합니다。디폴트 값로설정하면비활성화됩니다。

optimset의경우,값은“obj-and-constr”또는“没有”입니다。현재옵션이름과이전옵션이름항목을참조하십시오。

예:options = optimoptions('fmincon',' specyobjectivegradient ',true,' specyconstraintgradient ',true)

문제구조체로,다음필드를가진구조체로지정됩니다。

필드 이름 항목

客观的

목적 함수

x0

x의 초기점

Aineq

선형부등식제약조건에대한행렬

bineq

선형부등식제약조건에대한벡터

Aeq

선형등식제약조건에대한행렬

说真的

선형등식제약조건에대한벡터
하한으로구성된벡터
乌兰巴托 상한으로구성된벡터

nonlcon

비선형제약조건함수

解算器

“fmincon”

选项

optimoptions로생성되는옵션

问题구조체에적어도客观的x0解算器选项필드는반드시제공해야합니다。

데이터형:结构体

출력marketing수

모두 축소

해로,실수형벡터나실수형배열로반환됩니다。x의 크기는x0의크기와같습니다。일반적으로xexitflag가양수경우문제에대한국소해입니다。해의품질에대한자세한내용은当求解器成功时항목을참조하십시오。

해에서계산된목적함수값으로,실수로반환됩니다。일반적으로fval有趣的(x)입니다。

fmincon가중지된이유로,정수로반환됩니다。

모든알고리즘:

1

1차최적성측정값이选项。OptimalityTolerance보다작고최대제약조건위반값이选项。ConstraintTolerance보다작습니다。

0

반복횟수가选项。麦克斯特ations를초과하거나,함수실행횟수가选项。米axFunctionEvaluations를초과했습니다。

-1

출력함수나플롯함수에의해중지되었습니다。

-2

실현가능점을찾을수없습니다。

有效集을제외한모든알고리즘:

2

x의변화량이选项。StepTolerance보다작고최대제약조건위반값이选项。ConstraintTolerance보다작습니다。

trust-region-reflective알고리즘만해당:

3.

목적함수값의변화량이选项。FunctionTolerance보다작고최대제약조건위반값이选项。ConstraintTolerance보다작습니다。

有效集알고리즘만해당:

4

탐색방향의크기가2* .选项。StepTolerance보다작고최대제약조건위반값이选项。ConstraintTolerance보다작습니다。

5

탐색방향에서방향도함수의크기가2* .选项。OptimalityTolerance보다작고최대제약조건위반값이选项。ConstraintTolerance보다작습니다。

内点sqp-legacysqp알고리즘:

3

현재반복에서목적함수가选项。ObjectiveLimit아래로떨어졌으며최대제약조건위반값이选项。ConstraintTolerance보다작습니다。

최적화과정에대한정보로,다음필드를가진구조체로반환됩니다。

迭代

수행된반복횟수

funcCount

함수실행횟수

lssteplength

탐색방향을기준으로한직선탐색스텝의크기(有效集알고리즘과sqp알고리즘만해당)

constrviolation

제약조건함수의최댓값

stepsize

x의마지막변위의길이(有效集알고리즘에는해당되지않음)

算法

사용된최적화알고리즘

cgiterations

총PCG반복횟수(trust-region-reflective알고리즘과内点알고리즘)

firstorderopt

1차최적성에대한측정값

bestfeasible

최상의(가장낮은목적함수)실현가능점을발견했습니다。다음필드를포함한구조체:

  • x

  • fval

  • firstorderopt

  • constrviolation

실현가능점을찾지못한경우bestfeasible필드가비어있습니다。이를위해,제약조건함수의최댓값이选项。ConstraintTolerance를초과하지않을때점이실현가능합니다。

bestfeasible점은반환되는해에해당하는점x와다양한이유로다를수있습니다。예제는获得最佳可行点항목을참조하십시오。

消息

종료메시지

해에서의라그랑주승수로,다음필드를갖는구조체로반환됩니다。

较低的

에대응하는하한

乌兰巴托에대응하는상한

ineqlin

一个b에대응하는선형부등식

eqlin

Aeq说真的에대응하는선형등식

ineqnonlin

nonlcon에서c에대응하는비선형부등식

eqnonlin

nonlcon에서量表信에대응하는비선형등식

해에서의기울기로,실수벡터로반환됩니다。研究生는점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참조),즉다음과같습니다。

x x 2 l x λ 2 f x + λ 2 c x + λ 2 c e x (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]에더자세한설명이나와있습니다。

SQP및SQP- legacy최적화

fmincon“sqp”알고리즘과“sqp-legacy”알고리즘은Active-Set최적화에설명되어있는“激活集”알고리즘과유사합니다。주차이점에대한설명은fmincon의SQP알고리즘에나와있습니다。이러한차이점을약하자면다음과같습니다。

Active-Set최적화

fmincon순차적2차계획법(sqp)방법을사용합니다。이방법에서,함수는각반복마다2차계획법(qp)하위문제를풉니다。fmincon은bfg식을사용하여각반복마다라그랑주의헤세행렬에대한추정값을업데이트합니다(fminunc와참고문헌[7][8]참조)。

fmincon[6][7][8]에서제된것과유사한이득함수를사용하여직선탐색을수행합니다。Qp하위문제는[5]에설명된것과유사한활성세트전략을사용하여풉니다。이알고리즘에대한자세한설명은fmincon의Active-Set알고리즘에나와있습니다。

사용되는알고리즘에대한자세한내용을보려면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。

확장 기능

R2006a이전에개발됨