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