主要内容

不允许重复名称的变量

如果您使用两个具有相同名称的不同变量,那么优化表达式、约束或问题可能会抛出错误。当您创建一个变量,然后使用该变量创建一个表达式,然后重新创建该变量时,此错误是麻烦的。假设您创建了以下变量和约束表达式:

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]);

    如果使用旧变量创建的表达式多于使用新变量创建的表达式,则此方法非常有用。

相关的话题