SAS中optmodel中变量的条件

时间:2016-09-30 15:24:04

标签: optimization sas

我昨天一直在努力解决这个问题。我正在使用proc optmodel作为我的优化模型,我的变量有一个条件。就像我有变量A1和A2,约束是

A1 = A2   if A1<0

A1 >= A2   if A1>0

由于A1也是变量,因此SAS不允许我在约束条件中添加条件。我这样做:

var A1[C_C];
var A1[C_C];

Con test {<C1,C2> in C_C:  A1[C1,C2]<0}:
A2 [C1,C2] =A1[C1,C2];

Con test {<C1,C2> in C_C:  A1[C1,C2]>0}:
A2[C1,C2] <= A1[C1,C2];

我得到的错误是:&#34;变量不能在表达式中使用&#34; 是否有人对此有所了解。我已经搜索了很多但找不到任何东西。

1 个答案:

答案 0 :(得分:0)

好像你应该能够做到这一点更简单吗?

proc optmodel;
  var a1,a2;
  con test:  a1 ge a2;
  con test1: a1 eq if a1 < 0 then a2 else a1;
quit;

我怀疑有更好的解决方案,但这似乎有效。