美文网首页
如何在GAMS中将Table的一部分数据赋给另一个paramet

如何在GAMS中将Table的一部分数据赋给另一个paramet

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

    1. 问题描述

    假设有A是10行5列的parameter,B是一个100行5列的Table:

    Set 
    i /i1*i10/
    j /j1*j100/
    c /c1*c5/;
    
    Parameter
    A(i,c);
    
    Table B(j,c)
        c1    c2   c3   c4   c5
    j1   1     2    3    4    5
    j2   6     7    8    9   10
    j3  11    12   13   14   15
    ..;
    

    问题是如何将B中连续的10行(比如前10行)数据赋给A。

    2. 解决方法

    方法1

    可以用loop方法来完成:

    loop((i,j) $ (ord(j)=ord(i)),
    A(i,c)=B(j,c);
    );
    

    方法2

    将A的维数扩展到B的维数

    Parameter A(j,c);
    A(j, c)$(ord(j) lt 11) =  B(j, c);
    

    但是这种方法会导致A中出现很多0元素,导致存储资源的浪费。

    方法3

    定义子集的方法:

    Set i(j) /j1*j10/;
    Parameter A(i, c);
    A(i, c) = B(i, c);
    

    相关文章

      网友评论

          本文标题:如何在GAMS中将Table的一部分数据赋给另一个paramet

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