我昨天一直在努力解决这个问题。我正在使用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; 是否有人对此有所了解。我已经搜索了很多但找不到任何东西。
答案 0 :(得分:0)
好像你应该能够做到这一点更简单吗?
proc optmodel;
var a1,a2;
con test: a1 ge a2;
con test1: a1 eq if a1 < 0 then a2 else a1;
quit;
我怀疑有更好的解决方案,但这似乎有效。