首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >仅使用$ utility编写if then语句

仅使用$ utility编写if then语句
EN

Stack Overflow用户
提问于 2019-05-15 20:32:51
回答 1查看 66关注 0票数 0

我如何在GAMS中编码这个'if‘条件?

代码语言:javascript
复制
Set    j/1*10/ 
       S/1*6/;
   Parameter  
          b(s,j)    export this from excel
          U(s,j)    export  from excel 
          M(s)/1 100,2 250,3 140,4 120,5 132/    export from excel
    ;

table b(s,j)

    1   2   3   4   5   6    7   8    9    10
1   3   40  23  12  9   52   9   14   89   33  
2   0   0   42   0  11  32  11   15   3    7
3   10  20  12   9  5  30   14   5   14    5
4   0   0   0    9  0   3   8    0   13    5
5   0  10  11  32  11  0    3    1   12    1
6   12  20  2   9  15   3   14   5   14    5
;
 u(s,j)=0;
 u(s,j)$(b(s,j))=1;

  Variable delta(j);  "binary"

在求解一个模型后,我得到了delta值(假设delta值(1)=1,delta值(5)=1)。那么集合A就是

代码语言:javascript
复制
A(j)$(delta.l(j)=1)=Yes;  (A={1,5})

我想根据以下公式计算参数R(s):

代码语言:javascript
复制
 If  there is no j in A(j)  s.t.  j in u(s,j) then R(s)=M(s)
 Else if  there is a j in A(j) s.t. j in u(s,j) then R(s)=min{b(s,j): j in A(j) , j in u(s,j) }

则R(1)=3,R(2)=11,R(3)=5,R(4)=120,R(5)=11,R(6)=12。

是否可以仅通过$ utility来编写这条‘if then’语句?谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-16 05:02:24

在评论之后,我认为这对你应该是有效的。

(创建一个模拟您的变量delta值的参数,仅用于演示:)

代码语言:javascript
复制
parameter delta(j);
delta('1') = 1;
delta('5') = 1;

With loop和if/else:

创建参数R(s)。然后,在s上循环,选取集合A上的最小值b(s,A),其中如果b(s,A)的和不为零(即,如果集合中的一个不为零,则定义b(s,A) )。否则,设置R(s)等于M(s)。

请注意,循环是解决混合维度问题的一种解决方案。并且$(b(s,A))需要在smin(.)的第一个参数上,而不是在第二个参数上。

代码语言:javascript
复制
parameter R(s);

loop(s,

    if (sum(A, b(s,A)) ne 0,

        R(s) = smin(A$b(s,A), b(s,A));

    else

        R(s) = M(s);
    );

);

仅使用$ command (注释中的@Lutz):

代码语言:javascript
复制
R(s)$(sum(A, b(s,A)) <> 0) = smin(A$b(s,A), b(s,A)); 
R(s)$(sum(A, b(s,A)) = 0) = M(s);

提供:

代码语言:javascript
复制
----     56 PARAMETER R  

1   3.000,    2  11.000,    3   5.000,    4 120.000,    5  11.000,    6  12.000
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56149456

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档