主要内容

이번역번역이지는최신내용을담고담고않습니다않습니다。최신최신내용을영문영문으로여기를클릭클릭

제약조건이있는비선형비선형문제,문제문제

일반적인최적화문제

이예제에서는문제기반접근법을사용하여제약조건이있는비선형최적화문제를푸는방법을보여줍니다。이예제에서는목적함수를생성하고,제약조건을생성하고,문제를풀고,결과를검토하는일반적인워크플로를설명합니다。

참고:

목적함수또는비선형제약조건이기본함수로구성되지않은경우fcn2optimexpr을사용하여하여비선형비선형함수를최적화표현식으로변환해야이예제의의마지막부분에에fcn2optimexpr을사용한다른정식화방법또는将非线性函数转换为优化表达式항목을참조하십시오。

이문제에대한솔버기반접근법은제약조건이있는비선형비선형문제,솔버솔버항목을참조하십시오。

문제정식화:로젠브록함수(。函数)

로젠브록함수를최소화하는문제를살펴보겠습니다。

F X = 1 0. 0. X 2 - X 1 2 2 + 1 - X 1 2

이문제는단위원판,즉원점을중심으로하고반지름이1인원안의영역에서로젠브록함수를최소화합니다。즉,집합 X 1 2 + X 2 2 ≤. 1 의영역에서함수 F X 를최소화하는 X 를구한다는의미입니다。이문제는비선형제약에이적용되는비선형함수를최소하는문제입니다。

로젠브록함수는는최적화화에서일반적인인테스트함수함수이함수함수는[1]에서고유한최솟값0을가집니다。이함수는깊게굽은밸리내얕은최솟값을갖기때문일부알고리즘에서는최솟값을것것것것것것것수수수있습니다것것않을이문제문제의해는[1]에있지않는데그이유는이점은제약조건을하지하지때문입니다。

다음图는단위원판에서함수함수두가지보기보기보여보여세로축은로그스케일링되었습니다。즉,이플롯은 日志 1 + F X 를를줍니다。등고선은곡면플롯아래있습니다있습니다。

Rosenbrock = @(x)100*(x(:,2) - x(:,1).^2)。^2 + (1 - x(:,1))%矢量化函数图1 =图(“位置”,[1 200 600 300]);Colormap('灰色的');轴广场;r = 0:.002:1;th = 2 * pi *(0:.002:1);x = r'* cos(th);y = r'* sin(th);z = log(1 + rosenbrock([x(:),y(:)]));z =重塑(z,size(x));%创建子图子平板=子图(1,2,1,“父”,图1);查看([124 34]);网格('在');持有;%建立表面冲浪(x,y,z,“父”,subplot1,“线型”'没有任何');%创建轮廓轮廓(X, Y, Z,“父”,子平板1);%创建子图子平板2 =子图(1,2,2,“父”,图1);查看([234 34]);网格('在');持有%建立表面冲浪(x,y,z,“父”,子平板2,“线型”'没有任何');%创建轮廓轮廓(X, Y, Z,“父”,子平板2);%创建textarrow.注释(图1,'textarrow'(0.4 - 0.31),......[0.055 0.16],......'细绳', {的最低(0.7864,0.6177)});%创建箭头注释(图1,“箭头”,[0.59 0.62],......[0.065 0.34]);标题(“Rosenbrock的功能:两个视图”)举行

함수핸들은임의개수2차의원점에서한번에로젠브록함수를계산합니다。이벡터화는함수플로팅의속도를높이며,다른맥락에서도여러점에서함수의계산속도를높이는데유용할수있습니다。

함수 F X 목적함수라고합니다。목적함수는최소화하고자하는함수입니다。부등식 X 1 2 + X 2 2 ≤. 1 제약조건이라라고。제약조건은솔버가최솟값을탐색하는대상이되는 X 의집합을제한합니다。제약조건은부등식또는방정식으로되는데사용자는제약조건의수를원하는지정할수수수지정지정할수

최적화변수를사용하여문제정의하기

문제기반접근법을통한최적화에서는최적화변수를사용하여목적함수와제약조건을정의합니다。최적화변수를사용하여표현식을만드는방법에는다음두가지가있습니다。

  • 다항식함수또는유리함수의,변수에직접표현식을작성。

  • 다른유형의함수의경우,fcn2optimexpr을사용하여하여함수를를화표현식으로변환변환이예제의의마지막부분에에fcn2optimexpr을사용한한다른다른화화을을하십시오。

이문제에서는목적함수와제약조건이모두다항식이모두다항식이므로다항식최적를사용하여하여직접표현식을작성수2차원최적화변수'X'를만듭니다。

x = Optimvar('X'、1、2);

목적함수를최적화변수의다항식으로만듭니다。

obj = 100 *(x(2) -  x(1)^ 2)^ 2 +(1  -  x(1))^ 2;

obj.를를목적함수로갖는갖는최적화概率를만듭니다。

概率= optimproblem ('客观的',obj);

비선형비선형제약조건을을최적화의다항식으로으로변수의다항식으로

Nlcons = x(1)^2 + x(2)^2 <= 1;

문제에비선형제약조건을포함시킵니다。

prob.constraints.circlecons = nlcons;

문제를검토합니다。

展示(prob)
优化问题:解决:x最小化:((100. *(x(2) -  x(1)。^ 2)。^ 2)+(1  -  x(1))。^ 2)受Circlecons:(x(1)。^ 2 + x(2)。^ 2)<= 1

문제풀기

최적화문제를풀려면解决를호출하십시오。문제에는초기점이필요합니다。초기점이란최적화변수의초기값을제공하는구조체입니다。 X [0 0]을갖는초기점구조체X0.을만듭니다。

x0。X=[0 0];[溶胶,fval exitflag、输出]=解决(x0概率)
使用Fmincon解决问题。发现满足约束的本地最小值。优化完成,因为目标函数在可行的方向上不降低,到在最优性公差的值内,并且对约束公差的值满足约束。
sol =结构体字段:X:[0.7864 0.6177]
fval = 0.0457
ExitFlag = OptimalAllyolution.
输出=结构体字段:迭代:24 Funccount:34 CounterViroation:0步骤:6.9161E-06算法:'内部点'FirstOrderopt:2.1625E-08 Cgiterations:4消息:'...'最佳:[1x1 struct]求解器:'fmincon'

해검토하기

해의세부정보에ExitFlag = OptimalAllyolution.이라고고표시되어。이종료플래그는해가국소최적해임을나타냅니다。더더나은해해를구하기위한자세한은当求职者成功时항목을참조하십시오。

종료메시지는해가제약조건을을함함나타냅니다。해가실현가능하다는을가지지지확인확인수수수수수

  • 输出구조체의constrviolation필드에보고된실현가능성을확인합니다。

Infeas = output.ConstRviroation.
Infeas = 0.

실현불가능성이0이면해가실현가능한한것。

  • 이해에서의실현불가능성을계산。

infeas =不可行性(nlcons sol)
Infeas = 0.

마찬가지로실현실현가능성이0이0이면해가실현가능한한것。

  • X1의노름을계산하여보다작거나같은지확인합니다。

nx = norm(sol.x)
nx = 1.0000.

输出구조체는반복횟수(24),솔버(粉刺),함수계산횟수(84)등풀이과정에대한자세한내용을제공합니다。이러한통계량에대한자세한내용은허용오차와중지기준항목을참조하십시오。

fcn2optimexpr을사용한한다른다른화화

보다복잡한표현식의경우,목적함수또는제약조건함수에대해함수파일을작성한후fcn2optimexpr을사용하여이를최적최적화표현식표현식변환변환예를들어,비선형제약조건함수의기저는disk.m.파일파일있습니다。

类型磁盘
函数RadSQR =磁盘(x)Radsqr = x(1)^ 2 + x(2)^ 2;

이함수파일을최적화표현식으로변환합니다。

radsqexpr = fcn2optimexpr(@ disk,x);

이에더해,플로팅루틴의시작부분에정의된함수핸들을최적화표현식으로변환할수도있습니다。

rosenexpr = fcn2optimexpr(rosenbrock,x);

이와같이변환된최적화표현식사용하여하여최적화화문제를

convprob = OptimProblem('客观的',罗森普,'限制',Radsqexpr <= 1);

새문제를표시합니다。

显示(convprob)
优化问题:求解:x最小化:anonymousfunction2(x)其中:anonymousfunction2 = @(x)100 *(x(:,2)-x(:,1)。^ 2)。^ 2+(1-x(1-x(:,1))。^ 2;受:磁盘(x)<= 1

새문제를풉니다。해는기존과본질적으로동일합니다。

[SOL,FVAL,EXITFLAG,输出] =求解(CONDPROB,X0)
使用Fmincon解决问题。发现满足约束的本地最小值。优化完成,因为目标函数在可行的方向上不降低,到在最优性公差的值内,并且对约束公差的值满足约束。
sol =结构体字段:X:[0.7864 0.6177]
fval = 0.0457
ExitFlag = OptimalAllyolution.
输出=结构体字段:迭代:24 Funccount:84 CounterViroation:0 STAPTION:6.9162E-06算法:'内部点'Firstordopt:2.4373E-08 Cgiterations:4消息:'...'最佳:[1x1 struct]求解器:'fmincon'

지원되는함수목록은金宝app在优化变量和表达式上支持的操作항목을참조하십시오。

관련항목