optimproblem
创建优化问题
描述
使用optimproblem
创建一个优化问题。
提示
有关完整的工作流程,请参见基于问题的优化工作流.
例子
创造优化问题
创建一个默认属性的优化问题。
问题=优化问题
prob = OptimizationProblem与属性:描述:“ObjectiveSense: '最小化'变量:[0x0 struct]包含0 OptimizationVariables目标:[0x0 OptimizationExpression]约束:[0x0 struct]包含0 OptimizationConstraints没有问题定义。
创造并解决最大化问题
创建一个最大化的线性规划问题。这个问题有两个正变量和三个线性不等式约束。
问题=优化问题(“ObjectiveSense”,“马克斯”);
创造积极的变量。在问题中包含一个目标函数。
X = optimvar(“x”、2、1,下界的, 0);概率。目标= x(1) + 2*x(2);
在问题中创建线性不等式约束。
con1 = x(1) + 5*x(2) <= 100;con2 = x(1) + x(2) <= 40;con3 = 2*x(1) + x(2)/2 <= 60;prob.Constraints。con1 = con1;prob.Constraints。con2 = con2;prob.Constraints。con3 = con3;
回顾问题。
显示(概率)
优化问题:求解:x最大化:x(1) + 2*x(2)服从con1: x(1) + 5*x(2) <= 100服从con2: x(1) + x(2) <= 40服从con3: 2*x(1) + 0.5*x(2) <= 60变量边界:0 <= x(1) 0 <= x(2)
解决问题。
Sol =解决(问题);
用linprog解决问题。找到最优解。
sol.x
ans =2×125.0000 - 15.0000
创造和解决多目标问题
用一个二维变量的两个目标函数做一个问题x
.中的表达式创建目标函数x
,并把它们作为结构放在目标中。
X = optimvar(“x”2,下界= 2,UpperBound = 2);Prob =优化问题;probe . objective .first = norm(x)^2;probe . objective .second = norm(x - [1;0])^2;
解决问题。
rng默认的%用于再现性Sol =解决(问题);
使用gamultiobj解决问题。优化终止:Pareto解扩散的平均变化小于options.FunctionTolerance。金宝搏官方网站
画出解。
paretoplot (sol)
检查帕累托前沿的一个点。为此,单击该图并单击数据提示工具:
然后点击帕累托前面的一个点。
图中点的索引为9。你可以在x
与该点关联的值,作为索引9的解。
索尔(9)方式
ans =2×10.5544 - -0.0306
输入参数
名称-值参数
指定可选参数对为Name1 = Value1,…,以=家
,在那里的名字
参数名称和价值
对应的值。名称-值参数必须出现在其他参数之后,但对的顺序无关紧要。
在R2021a之前,使用逗号分隔每个名称和值,并将其括起来的名字
在报价。
例子:要指定最大化问题,请使用prob = optimproblem('ObjectiveSense','maximize')
.
约束
- - - - - -问题的约束
OptimizationConstraint
数组|结构OptimizationConstraint
数组作为字段
问题约束,指定为OptimizationConstraint
数组或结构OptimizationConstraint
数组作为字段。
例子:prob = optimproblem('Constraints',sum(x,2) == 1)
描述
- - - - - -标签问题
”
(默认)|字符串|特征向量
问题标签,指定为字符串或字符向量。该软件无法使用描述
为计算。描述
是一个可以用于任何原因的任意标签。例如,您可以共享、归档或呈现模型或问题,并在中存储关于模型或问题的描述性信息描述
.
例子:《旅行推销员问题的迭代方法》
数据类型:字符
|字符串
客观的
- - - - - -目标函数
标量OptimizationExpression
|的数组OptimizationExpression
|带标量的结构OptimizationExpression
作为字段
目标函数,指定为标量OptimizationExpression
对象的数组OptimizationExpression
对象,或具有标量的结构OptimizationExpression
作为字段。
对于标量(单目标)问题,将目标函数指定为标量优化表达式或值为标量优化表达式的结构。
对于多目标问题,将目标函数指定为向量值优化表达式、优化表达式数组或优化表达式结构。例如,这个目标是一个标量优化变量中的优化表达式结构
x
:Prob =优化问题;probe . objective .first = x^2;probe . objective .second = (x + 1)^2;
例子:prob = optimproblem('Objective',sum(sum(x)))
对于一个二维变量x
.
例子:prob = optimproblem('Objective',(x-a).^2)
在哪里x
而且一个
是2乘1的,还有x
是优化变量。
ObjectiveSense
- - - - - -优化感
“最小化”
(默认)|“最小值”
|“最大化”
|“马克斯”
|结构,并将列出的值作为字段
优化感,指定为“最小化”
或“最大化”
.你也可以指定“最小值”
获得“最小化”
或“马克斯”
获得“最大化”
.的解决
函数最小化目标时ObjectiveSense
是“最小化”
并使目标最大化ObjectiveSense
是“最大化”
.
ObjectiveSense
可以是一个有价值的结构吗“最小化”
,“最小值”
,“最大化”
,或“马克斯”
.当问题目标是一个结构时,可以使用这种形式。的客观的
而且ObjectiveSense
结构应该具有相同的字段名,因此ObjectiveSense
适用于相应的客观的
.例如,
X = optimvar(“x”2,“UpperBound”2,“下界”2);Prob =优化问题;probe . objective .first = norm(x)^2;probe . objective .second = -norm(x - [1;0])^2;prob.ObjectiveSense.first =“最小值”;prob.ObjectiveSense.second =“马克斯”;
如果客观的
是结构,可以指定吗ObjectiveSense
如名如姓“马克斯”
.在这种情况下,所有的目标都是相同的ObjectiveSense
.
例子:prob = optimproblem('ObjectiveSense','max')
数据类型:字符
|字符串
输出参数
概率
-优化问题
OptimizationProblem
对象
优化问题,返回为OptimizationProblem
对象。通常,要完成问题描述,需要指定目标函数和约束。但是,你可以有一个没有目标函数的可行性问题,或者你可以有一个没有约束的问题。通过呼叫解决一个完整的问题解决
.
警告
基于问题的方法不支持目标函数、非线性等式或非线性不等式中的复值。金宝app如果函数计算具有复杂的值,即使是作为中间值,最终结果也可能是不正确的。
版本历史
在R2017b中引入
MATLAB命令
你点击了一个对应于这个MATLAB命令的链接:
在MATLAB命令窗口中输入该命令来运行该命令。Web浏览器不支持MATLAB命令。金宝app
您也可以从以下列表中选择一个网站:
如何获得最佳的网站性能
选择中国站点(中文或英文)以获得最佳站点性能。其他MathWorks国家站点没有针对您所在位置的访问进行优化。