。
このこの例で,出力有关部を使使プロットし,非非形形问题の反复のを保存する问题この说履歴にますますこのにははますははははますははますますはますははははは点点点点点点点点点点点点のののののの点点のののの点点点のののの点点点点点点向の目的关关値が含まれます。
この例へのソルバーベースソルバーベースのアプローチは,优化工具箱™のの力关流を参照してください。
プロット关关数のと同じため,このこのは关键词。
ソルバーベースのアプローチ両でているアプローチで记述ますますアプローチではしますますアプローチは,単ソルバーベースでは,単ので,単ますでは,単ますで,単。この分数は通常,さまざまなサイズの最适化学数量の料ではなく,X
と表されます。そのその,问题ベースのアプローチのののをするは,最适化学数量と単単のソルバーベースX
最最适なければませませ解适のなければなりませ最しのなければなりませません适のなけれ変変変X
との间でマッピングを行うには,varindex.
をを使ます。このこの例で,X
という名前の最适最适変と混同混同をためににに,在”
をを数名として使使使。
この问题では,参数X
およびy
の次の关键词。
さらに,このこの问题にははつの非形形制约があり
问题最するははをするに,最最适するにとと最适オブジェクトオブジェクトを定义し
x = Optimvar('X');y = Optimvar('是');prob = OptimProblem;
最适化学数量の式としてとしてを定义定义ます。
f = exp(x)*(4 * x ^ 2 + 2 * y ^ 2 + 4 * x * y + 2 * y + 1);
目的关节数概率
ににます。
prob.objective = f;
钢丝形制约を含める,最最化制约式をは。
cons1 = x + y - x * y> = 1.5;cons2 = x * y> = -10;prob.constraints.cons1 = cons1;prob.constraints.cons2 = cons2;
これは非线问题问题ため,初期点构造体X0.
を含めなければなりんん。x0.x = -1
およびx0.y = 1
を使用します。
x0.x = -1;x0.y = 1;
求力有关部outfun.
は,その反复中に粉刺
出生成さされる点履歴を记录しし出プロットプロットプロットプロットプロットプロットプロットプロットプロットプロットSQP.
探索向探索向ののの履歴保持ます探索向は,前の点から粉刺
がが试みる次の点へのベクトルですベクトルベクトルでははベクトルはははベクトルベクトルででワークにに履歴を保存しスペースに履歴を保存ししにに履歴をししスペースに履歴文
必要必要となる最适最适最适最适出出のの构についてについて,触力关节关系关键词を参照してください。
しかし,现处于はますますはつの変がますはは,varindex.
を使用します。
idx = varindex(prob);idx.x.
ans = 1
idx.y.
ans = 2
マッピングは,X
がが数1でy
が函数2であることを示してます。そのその,入力分数の名前が在
であるである合,X = IN(1)
およびy =(2)
ににます。
类型outfun.
函数停止= outfun(在,优化值,状态,idx)持久历史searchdir fhistory stop = false;Switch状态案例'init'保持历史= [];fhistory = [];searchDir = [];案例'iter'%concatenate当前点和目标函数%历史值。必须是一排矢量。fhistory = [fhistory;优化values.fval];历史= [历史;在(:)']; % Ensure in is a row vector % Concatenate current search direction with % searchdir. searchdir = [searchdir;... optimValues.searchdirection(:)']; plot(in(idx.x),in(idx.y),'o'); % Label points with iteration number and add title. % Add .15 to idx.x to separate label from plotted 'o' text(in(idx.x)+.15,in(idx.y),... num2str(optimValues.iteration)); title('Sequence of Points Computed by fmincon'); case 'done' hold off assignin('base','optimhistory',history); assignin('base','searchdirhistory',searchdir); assignin('base','functionhistory',fhistory); otherwise end end
outputfcn.
オプションオプションを设定し,最适化にに力有关部を,既定の'内点'
アルゴリズムではなく'SQP'
アルゴリズムアルゴリズム使用するように算法
オプションを设定します。idx.
を最后の入力量の追パラメーターとして力关键数に渡し。详细详细,加加パラメーターの受け渡しを参照してください。
outputfn = @(in,OptimValues,状态)Outfun(In,OptimValues,State,IDX);opts = Optimoptions('粉丝'那'算法'那'SQP'那'outputfcn',Outporfn);
名称と値のペアペアの数选项'
をを使し,变力关节を最适化実行。
[SOL,FVAL,EFLAG,输出] =求解(prob,x0,'选项',选择)
使用Fmincon解决问题。
发现满足约束的本地最小值。优化完成,因为目标函数在可行的方向上不降低,到在最优性公差的值内,并且对约束公差的值满足约束。
sol =结构与字段:X:-9.5474 Y:1.0474
FVAL = 0.0236.
EFLAG = OPERALALSOUTION.
输出=结构与字段:迭代:10 Funccount:22算法:'SQP'消息:'...'Constrviolation:1.2434E-14步骤:1.4785E-07 LSSTeplenth:1 FirstOrderOpt:7.1930E-10 Bestfeasible:[1x1 STRACH]求解器:'Fmincon'
反复反复の履歴を确认しし。行程Optimhistory.
ののいくつか点はにいくつ近接ていそのため,シーケンスのプロットは点てさをが点なっ表示され重なっ表示されてなっ表示されれますなっ表示れれ重なっ表示されていなっ表示されれていいて表示されていいてさされか重最后てさの点点はは最后のの点点点ははははは最后の点点点表しはははははははははますますのますのののののののののののののののののますはそのそののいくつかのいその非常に近接ししいい非常ためため近接しにには
DISP('地点'); disp(Optimhistory)
位置-1.0000 1.0000 -1.3679 1.2500 -1.6509 1.1513 -3.5870 2.0537 -3.4574 2.2895 -5874 2.2895 -5.8015 1.5531 -7.6498 1.1225 -8.523 1.0572 -9.5463 1.0464 -9.5474 1.0474 -9.5474 1.0474
配列SearchDirhistory.
および函数函数
を确认します。
DISP('搜索方向'); disp(searchdirhistory)
搜索方向0 0 -0.3679 0.2500-0.2831 -0.0687 -1.9360 0.8725 -0.8704 0.2358 -1.3441-0.7364 -2.0877 -0.6493 -0.8725 -0.0653 -1.0241-0.0108 -0.0011 0.0010 0.0000 -0.00100
DISP('函数值'); DISP(功能函数)
功能值1.8394 1.8513 1.7757 0.9839 0.6343 0.3250 0.0978 0.0517 0.0236 0.0236 0.0236
FCN2Optimexpr.
をを必要とするするサポートされてい关词交错关节相关数目が等相关数目构成されてないないないないない合书,FCN2Optimexpr.
详细は,そのはなけれしなけれははははししなけれなけれはははししなけれなけれませませ使。非线关关数からからからへののを参照しください。次次に例を示し示しますにに例を示し
fun = @(x,y)exp(x)*(4 * x ^ 2 + 2 * y ^ 2 + 4 * x * y + 2 * y + 1);f = fcn2optimexpr(乐趣,x,y);
サポートされている关键数の一覧について,最最化学数量および式でサポートされる演算を参照してください。