主要内容

不允许变量名称重复

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

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

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

相关的话题

Baidu
map