不允许变量名称重复
如果使用两个具有相同名称的不同变量,则优化表达式、约束或问题可能抛出错误。当您创建一个变量,然后使用该变量创建一个表达式,然后再重新创建该变量时,这个错误是很麻烦的。假设您创建了以下变量和约束表达式:
x = optimvar (“x”10、2);Cons = sum(x,2) == 1;
此时,您意识到您打算创建整数变量。因此,您可以重新创建变量,改变其类型。
x = optimvar (“x”10 2“类型”,“整数”);
设定目标和问题。
obj =总和(x *[2、3]);概率= optimproblem (“目标”、obj);
现在试着把约束带入问题中。
概率。约束=缺点
此时,您将得到一个错误消息,说明这一点OptimizationVariables
出现在同一个问题上必须有不同的“的名字”的特性。问题是当你重新创建x
变量,它是一个新变量,与约束表达式无关。
可以通过两种方式纠正这个问题。
创建一个新的约束表达式
x
.Cons = sum(x,2) == 1;概率。约束=缺点;
检索原始
x
变量,使用旧表达式创建一个问题。更新检索到的变量,使其具有正确的类型
财产。为问题和目标使用检索到的变量。oprob = optimproblem (“约束”、缺点);x = oprob.Variables.x;x.Type =“整数”;oprob。目标=总和(x *[2、3]);
如果使用旧变量创建的表达式多于使用新变量创建的表达式,则此方法会很有用。