slowlypig 发表于 2012-11-22 13:47

为什么如下程序运行时总出现sunscript out of range

model:

sets:

requirement/1..7/:time,need;

version/1..4/:number,minmw,maxmw,fcost,mcost,scost;
fact(version,requirement):snumber,fput;
endsets
data:
need=12000 32000 25000 36000 25000 30000 18000;

time=6 3 3 2 4 4 2;

minmw=750 1000 1200 1800;

maxmw=1750 1500 2000 3500;
number=10 4 8 3;
fcost=2250 1800 3750 4800;
mcost=2.7 2.2 1.8 3.8;
scost=5000 1600 2400 1200;
enddata
@for(requirement(I):
     @sum(version(J):snumber(I,J)*fput(I,J))>=need(I));
end
各位大神帮帮忙,疯掉了

slowlypig 发表于 2012-11-22 13:52

自己顶一下,大家帮我看一下~

sorjor 发表于 2012-11-22 15:23

fact(version,requirement):snumber,fput;这一句有问题;

fact(requirement,version):snumber,fput;我的版本限制,不能运行你改过来试试看。

sorjor 发表于 2012-11-22 15:27

fact(version,requirement):snumber,fput;改成fact(requirement,version):snumber,fput;你这样改完试试看,我的版本限制不能运行

sorjor 发表于 2012-11-22 15:29

model:

sets:

requirement/1..7/:time,need;

version/1..4/:number,minmw,maxmw,fcost,mcost,scost;
fact(requirement,version):snumber,fput;
endsets
data:
need=12000 32000 25000 36000 25000 30000 18000;

time=6 3 3 2 4 4 2;

minmw=750 1000 1200 1800;

maxmw=1750 1500 2000 3500;
number=10 4 8 3;
fcost=2250 1800 3750 4800;
mcost=2.7 2.2 1.8 3.8;
scost=5000 1600 2400 1200;
enddata
@for(requirement(I):
     @sum(version(J):snumber(I,J)*fput(I,J))>=need(I));
end



  Feasible solution found.
  Infeasibilities:                              0.000000
  Total solver iterations:                             4


                                           Variable           Value
                                           TIME( 1)        6.000000
                                           TIME( 2)        3.000000
                                           TIME( 3)        3.000000
                                           TIME( 4)        2.000000
                                           TIME( 5)        4.000000
                                           TIME( 6)        4.000000
                                           TIME( 7)        2.000000
                                           NEED( 1)        12000.00
                                           NEED( 2)        32000.00
                                           NEED( 3)        25000.00
                                           NEED( 4)        36000.00
                                           NEED( 5)        25000.00
                                           NEED( 6)        30000.00
                                           NEED( 7)        18000.00
                                         NUMBER( 1)        10.00000
                                         NUMBER( 2)        4.000000
                                         NUMBER( 3)        8.000000
                                         NUMBER( 4)        3.000000
                                          MINMW( 1)        750.0000
                                          MINMW( 2)        1000.000
                                          MINMW( 3)        1200.000
                                          MINMW( 4)        1800.000
                                          MAXMW( 1)        1750.000
                                          MAXMW( 2)        1500.000
                                          MAXMW( 3)        2000.000
                                          MAXMW( 4)        3500.000
                                          FCOST( 1)        2250.000
                                          FCOST( 2)        1800.000
                                          FCOST( 3)        3750.000
                                          FCOST( 4)        4800.000
                                          MCOST( 1)        2.700000
                                          MCOST( 2)        2.200000
                                          MCOST( 3)        1.800000
                                          MCOST( 4)        3.800000
                                          SCOST( 1)        5000.000
                                          SCOST( 2)        1600.000
                                          SCOST( 3)        2400.000
                                          SCOST( 4)        1200.000
                                     SNUMBER( 1, 1)        1.234568
                                     SNUMBER( 1, 2)       0.1000000E+08
                                     SNUMBER( 1, 3)        1.234568
                                     SNUMBER( 1, 4)        1.234568
                                     SNUMBER( 2, 1)       0.1000001E+08
                                     SNUMBER( 2, 2)        1.234568
                                     SNUMBER( 2, 3)        1.234568
                                     SNUMBER( 2, 4)        1.234568
                                     SNUMBER( 3, 1)       0.1000001E+08
                                     SNUMBER( 3, 2)        1.234568
                                     SNUMBER( 3, 3)        1.234568
                                     SNUMBER( 3, 4)        1.234568
                                     SNUMBER( 4, 1)       0.1000001E+08
                                     SNUMBER( 4, 2)        1.234568
                                     SNUMBER( 4, 3)        1.234568
                                     SNUMBER( 4, 4)        1.234568
                                     SNUMBER( 5, 1)       0.1000003E+08
                                     SNUMBER( 5, 2)        1.234568
                                     SNUMBER( 5, 3)        1.234568
                                     SNUMBER( 5, 4)        1.234568
                                     SNUMBER( 6, 1)       0.1000003E+08
                                     SNUMBER( 6, 2)        1.234568
                                     SNUMBER( 6, 3)        1.234568
                                     SNUMBER( 6, 4)        1.234568
                                     SNUMBER( 7, 1)       0.1000003E+08
                                     SNUMBER( 7, 2)        1.234568
                                     SNUMBER( 7, 3)        1.234568
                                     SNUMBER( 7, 4)        1.234568
                                        FPUT( 1, 1)        1.234568
                                        FPUT( 1, 2)        1.234568
                                        FPUT( 1, 3)        1.234568
                                        FPUT( 1, 4)        1.234568
                                        FPUT( 2, 1)        1.234568
                                        FPUT( 2, 2)        1.234568
                                        FPUT( 2, 3)        1.234568
                                        FPUT( 2, 4)        1.234568
                                        FPUT( 3, 1)        1.234568
                                        FPUT( 3, 2)        1.234568
                                        FPUT( 3, 3)        1.234568
                                        FPUT( 3, 4)        1.234568
                                        FPUT( 4, 1)        1.234568
                                        FPUT( 4, 2)        1.234568
                                        FPUT( 4, 3)        1.234568
                                        FPUT( 4, 4)        1.234568
                                        FPUT( 5, 1)        1.234568
                                        FPUT( 5, 2)        1.234568
                                        FPUT( 5, 3)        1.234568
                                        FPUT( 5, 4)        1.234568
                                        FPUT( 6, 1)        1.234568
                                        FPUT( 6, 2)        1.234568
                                        FPUT( 6, 3)        1.234568
                                        FPUT( 6, 4)        1.234568
                                        FPUT( 7, 1)        1.234568
                                        FPUT( 7, 2)        1.234568
                                        FPUT( 7, 3)        1.234568
                                        FPUT( 7, 4)        1.234568

                                                Row    Slack or Surplus
                                                  1       0.1233368E+08
                                                  2       0.1231369E+08
                                                  3       0.1232069E+08
                                                  4       0.1230969E+08
                                                  5       0.1232071E+08
                                                  6       0.1231571E+08
                                                  7       0.1232771E+08

madio 发表于 2012-11-22 16:53

楼上说的没错,这个是下标越界错误,应该就是下标所在的集不对应造成的

slowlypig 发表于 2012-11-22 18:20

sorjor 发表于 2012-11-22 15:29 static/image/common/back.gif
model:

sets:


非常感谢,我昨天才看的教程,直接按例子上的来,然后一直不行,我也不知道为啥。。。多谢你

slowlypig 发表于 2012-11-22 18:22

madio 发表于 2012-11-22 16:53 static/image/common/back.gif
楼上说的没错,这个是下标越界错误,应该就是下标所在的集不对应造成的

这个问题解决了非常感谢
页: [1]
查看完整版本: 为什么如下程序运行时总出现sunscript out of range