美文网首页
模型的数据部分和初始部分

模型的数据部分和初始部分

作者: RavenX | 来源:发表于2017-04-27 09:00 被阅读0次

    在处理模型的数据时,需要为集指派一些成员并且在 LINGO 求解模型之前为集的某些属性指定值。为此,LINGO 为用户提供了两个可选部分:输入集成员和数据的 数据部分(Data Section)和为决策变量设置初始值的 初始部分(Init Section)。

    模型的数据部分

    数据部分入门

    数据部分以关键字“data:”开始,以关键字“enddata”结束。在这里,可以指定集成员、集的属性。其语法如下:
    object_list = value_list;

    eg:

    !集部分;
    sets:
     students:sex,age;
    endsets
    !数据部分;
    data:
      sex = 1 1 1;
      age = 10 12 13;
    enddata
    
    !集部分;
    sets:
     students:sex,age;
    endsets
    !数据部分;
    data:
    sex,age = 1 10
            1 12
            1 13;
    enddata
    

    上面两种方法得到的结果完全一致。

    实时数据处理

    在某些情况下,对于模型中的某些数据并不是定值。我们可以用?号来代替.

    eg:

    data:
     interest_rate,infatiion_rate = 0.85 ?;
    enddata
    

    这样当运行程序的时候,会有窗口提示输入infation_rate的值

    Paste_Image.png

    指定属性为一个个值

    可以在数据声明的右边把所有成员的该属性指定为一个值。

    eg:

    sets:
     days /a,b,c,d/:needs;
    endsets
    
    data:
     needs = 1;
    enddata
    

    这样所有的成员的needs属性全部都是1

    多成员属性的时候

    sets:
     days /a,b,c,d/:needs,cost;
    endsets
    
    data:
     needs = 1;
     cost = 2;
    enddata
    

    数据部分的未知数值

    有时候只想为一个集的部分成员的某个属性指定值,而让其余成员的该属性保持未知。

    sets:
     days /a,b,c,d/:needs,cost;
    endsets
    
    data:
      needs = ,1,2,;
    enddata
    
    结果:
      Feasible solution found.
      Total solver iterations:                             0
    
    
                                               Variable           Value
                                              NEEDS( A)        1.234568
                                              NEEDS( B)        1.000000
                                              NEEDS( C)        2.000000
                                              NEEDS( D)        1.234568
                                               COST( A)        1.234568
                                               COST( B)        1.234568
                                               COST( C)        1.234568
                                               COST( D)        1.234568
    
    
    

    模型的初始部分

    初始部分是 LINGO 提供的另一个可选部分。在初始部分中,可以输入 初始声明
    (initialization statement),和数据部分中的数据声明相同。对实际问题的建模时,初始部分并不起到描述模型的作用,在初始部分输入的值仅被 LINGO 求解器当作初始点来用,并且仅仅对非线性模型有用。和数据部分指定变量的值不同,LINGO 求解器可以自由改变初始部分初始化的变量的值。
    一个初始部分以“init:”开始,以“endinit”结束。初始部分的初始声明规则和数据
    部分的数据声明规则相同。也就是说,我们可以在声明的左边同时初始化多个集属性,可以把集属性初始化为一个值,可以用问号实现实时数据处理,还可以用逗号指定未知数值

    相关文章

      网友评论

          本文标题:模型的数据部分和初始部分

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