fmincon
解算器这个例子展示了如何使用优化Live Editor任务与fmincon
在线性和非线性约束和边界条件下最小化二次方程的求解器。
考虑寻找[x1,x2),解决了
受约束
的起点x0
这个问题是x1= 3,x2= 1。
控件创建一个新的活动脚本新的生活的脚本按钮文件上节首页选项卡。
插入一个优化住编辑任务。单击插入然后,在代码部分中,选择任务>优化.
为了以后在输入问题数据时使用,请选择插入> Section Break.新的部分出现在任务的上面和下面。
从任务的顶部开始,输入问题类型和约束类型。单击目标>二次按钮,约束>下界,线性不等式,非线性按钮。任务显示推荐的求解器为fmincon
.
目标函数
目标函数非常简单,可以用匿名函数表示。将光标定位到任务上方的部分并输入以下代码。
有趣= @ (x)和(x ^ 2);
下界
这个问题包含下界x1≥0.5.将这个界限表示为一个变量磅
.当光标位于定义目标函数的行尾时,按下输入,并输入以下代码指定下界。
lb = [0.5 -Inf];
初始点
当光标位于定义下界的行尾时,按下输入,输入以下代码设置初始点。
x0 = (3,1);
线性约束条件
当光标位于定义起始点的行尾时,按下输入,并输入以下代码设置线性约束。
一个= [1];b = 1;
运行部分
顶部部分现在包括5个参数。
接下来,您需要运行该部分,将参数作为变量放置到工作区中。为此,单击该区域最左边的区域,该区域包含一个斜条纹条。单击此区域后,条形图变为实条形图,表明变量现在位于工作区中。(注:您也可以按按Ctrl + Enter运行该部分。)
问题数据
将变量输入选择问题数据任务的一部分。要指定目标函数,请选择目标函数>函数句柄并选择有趣的.
设定起始点x0.
选择下界>来自工作区并选择磅.
设置线性不等式约束变量一个
和b
在线性不等式区域。
现在指定非线性不等式约束。在选择问题数据部分中,选择非线性>局部函数,然后单击新按钮。该函数出现在任务下面的新部分中。编辑生成的代码以包含以下未注释的行。
函数测查[c] = constraintFcn (x)%您可以包含或不包含注释代码行。%确保只保留这些未注释的行:C = [-x(1)^2 -x(2)^2 + 1;x(1)^2 - x(2)^2 + 9;x - x (1) ^ 2 + (2);x - x (2) ^ 2 + (1)];测查= [];结束
在选择问题数据部分中,选择constraintFcn函数。
监测进展
在显示进度部分的任务,选择>每次迭代这样你就可以监控求解器的进程。选择客观价值的阴谋。
你的设置看起来像这样:
要运行求解器,请单击选项按钮⁝在任务窗口的右上方,然后选择运行部分.
绘图显示在单独的图形窗口和任务输出区域中。
要查看解决方案变量的返回位置,请查看任务的顶部。
最后一个点及其相关的目标函数值出现在解决方案
和objectiveValue
工作区中的变量。通过在任务下面的实时编辑器部分输入这段代码来查看这些值。
解决方案,objectiveValue
新闻按Ctrl + Enter管理这个部门。