【问题标题】:overriding a constraint in AMPL覆盖 AMPL 中的约束
【发布时间】:2016-07-05 13:14:17
【问题描述】:

我想知道我们如何覆盖 AMPL 中的约束。在一个非常基本的例子中:

var x >= 0  ;
var y  >= 0;

minimize cost : x^2 + y^4;

subject to constraint1 : x+2*y >= 100;

subject to constraint1 : x+2*y <= 10;

---------------------------------

"constraint1 is already defined"

AMPL 使用第一个“constraint1”作为其约束并忽略第二个,AMPL 有什么办法使用最后一个“constraint1”?

【问题讨论】:

  • 对第二个约束使用不同的名称
  • 我不想使用 2 个约束,我只想用新的约束覆盖之前的约束。
  • 如果您有数据并运行文件,那么您可以将约束写为 x+2*y>=low_lim 和 x+2*y

标签: constraints overriding ampl


【解决方案1】:

不能用相同的变量名覆盖约束。

可以通过条件逻辑(如果想到语句)在分配给相同名称的约束之间切换,但它们不能被覆盖。

【讨论】:

    【解决方案2】:

    正如@Everyone_Else 所述,您可以使用 if 语句。

    在第 13 章的 AMPL 书中,有一些如何使用它的示例,特别是子章节:

    • 13.4 测试条件:if-then-else 语句。

    https://ampl.com/resources/the-ampl-book/chapter-downloads/

    您的情况如下所示:

    if -->condition<--
     subject to constraint1 : x+2*y >= 100;
    else
     subject to constraint1 x+2*y <= 10;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-04-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-02
      相关资源
      最近更新 更多