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