美文网首页
GAMS笔记(持续更新中)

GAMS笔记(持续更新中)

作者: 柯西盗耳 | 来源:发表于2019-07-23 22:22 被阅读0次

    1. Display

    display命令之后可以跟单个的变量和参数,但是不能直接是算式。
    例如下述代码是正确的

    scalar x /1/, y /2/;
    display x,y;
    

    而下述代码是错误的

    scalar x /1/, y /2/;
    display x+y;
    

    Error 409: Unrecognizable item - skip to find a new statement

    2. 赋值

    sets  row            / r1*r10 / ;
    parameters  r(row)   /r1*r7 4, r8*r10 5/;
    

    这段代码的意思是,对参数r的第1~7个位置赋值4,而第8 ~10个位置赋值5。
    下面的一段代码,结果会是什么呢?

    set i / i1*i10 /;
    parameter f(i) / i1 1 /
    y(i);
    y(i)=f(i)$(ord(i)=0);
    y(i)=f(i)$(ord(i)=100);
    display y;
    

    答案是

    y = 0

    当索引超过了Set的预设范围时,参数的值默认为0。

    3. Equation

    在loop循环和if条件语句中,不允许定义equation。

    4. 变量和参数的定义

    在定义参数和变量时,必须使用一维索引值,不允许使用多维索引值,但是在调用参数和变量时允许使用多维索引。例如下面的定义和使用方法是正确的。

    set aij(a,i,j);
    parameter lam(a,i,j); %参数定义
    lam(aij(a,i,j))=0; %参数赋值
    
    variable x(a,i,j); %变量定义
    

    但是下面的做法是错误的

    set aij(a,i,j);
    parameter lam(aij(a,i,j)); %错误!
    variable x(aij(a,i,j)); %错误!
    

    4. 只运行代码的前半部分

    在进行程序调试时,你可能只想运行你代码前面的一部分,而让GAMS忽略后半部分的代码,可以通过在两部分代码中间加入$exit来实现该功能

    code lines; % Code you are testing
    $exit
    code lines; % Code to be neglected
    

    相关文章

      网友评论

          本文标题:GAMS笔记(持续更新中)

          本文链接:https://www.haomeiwen.com/subject/rfyzlctx.html