数学建模社区-数学中国

标题: 求高手帮忙查看一个简单的lingo程序,不知道哪里出错了 [打印本页]

作者: LWQGG    时间: 2012-12-15 01:14
标题: 求高手帮忙查看一个简单的lingo程序,不知道哪里出错了
min=z;
SETS:
s/1..5/:i;
b/1..27/:j;
links(s,b):a;
ENDSETS
@for(sfor(bbin(a(i,j))));
@FOR(bsum(s:i*a(i,j))<=z);
@FOR(bsum(s:a(i,j))=1);
@for(s:a(i,17)+a(i,18)<=1);
@for(s:a(i,16)+a(i,17)<=1);
@for(s:a(i,16)+a(i,18)<=1);
@for(s:a(i,16)+a(i,15)<=1);
@for(s:a(i,14)+a(i,15)<=1);
@for(s:a(i,14)+a(i,16)<=1);
@for(s:a(i,14)+a(i,13)<=1);
@for(s:a(i,14)+a(i,19)<=1);
@for(s:a(i,19)+a(i,25)<=1);
@for(s:a(i,19)+a(i,20)<=1);
@for(s:a(i,25)+a(i,26)<=1);
@for(s:a(i,25)+a(i,27)<=1);
@for(s:a(i,26)+a(i,27)<=1);
@for(s:a(i,25)+a(i,20)<=1);
@for(s:a(i,20)+a(i,22)<=1);
@for(s:a(i,20)+a(i,21)<=1);
@for(s:a(i,21)+a(i,24)<=1);
@for(s:a(i,21)+a(i,23)<=1);
@for(s:a(i,23)+a(i,24)<=1);
@for(s:a(i,21)+a(i,22)<=1);
@for(s:a(i,13)+a(i,7)<=1);
@for(s:a(i,13)+a(i,8)<=1);
@for(s:a(i,8)+a(i,7)<=1);
@for(s:a(i,8)+a(i,9)<=1);
@for(s:a(i,8)+a(i,10)<=1);
@for(s:a(i,9)+a(i,10)<=1);
@for(s:a(i,10)+a(i,11)<=1);
@for(s:a(i,10)+a(i,12)<=1);
@for(s:a(i,11)+a(i,12)<=1);
@for(s:a(i,7)+a(i,5)<=1);
@for(s:a(i,7)+a(i,6)<=1);
@for(s:a(i,5)+a(i,6)<=1);
@for(s:a(i,5)+a(i,4)<=1);
@for(s:a(i,5)+a(i,3)<=1);
@for(s:a(i,3)+a(i,4)<=1);
@for(s:a(i,6)+a(i,2)<=1);
@for(s:a(i,6)+a(i,1)<=1);
@for(s:a(i,1)+a(i,2)<=1);
@for(s:a(i,13)+a(i,19)<=1);

作者: sorjor    时间: 2012-12-15 11:22
min=z;
SETS:
s/1..5/:k;
b/1..27/:l;
links(s,b):a;
ENDSETS
@for(s(i):@for(b(j):@bin(a(i,j))));
@FOR(b(j):@sum(s(i):k*a(i,j))<=z);
@FOR(b(j):@sum(s(i):a(i,j))=1);
@for(s(i):a(i,17)+a(i,18)<=1);
@for(s(i):a(i,16)+a(i,17)<=1);
@for(s(i):a(i,16)+a(i,18)<=1);
@for(s(i):a(i,16)+a(i,15)<=1);
@for(s(i):a(i,14)+a(i,15)<=1);
@for(s(i):a(i,14)+a(i,16)<=1);
@for(s(i):a(i,14)+a(i,13)<=1);
@for(s(i):a(i,14)+a(i,19)<=1);
@for(s(i):a(i,19)+a(i,25)<=1);
@for(s(i):a(i,19)+a(i,20)<=1);
@for(s(i):a(i,25)+a(i,26)<=1);
@for(s(i):a(i,25)+a(i,27)<=1);
@for(s(i):a(i,26)+a(i,27)<=1);
@for(s(i):a(i,25)+a(i,20)<=1);
@for(s(i):a(i,20)+a(i,22)<=1);
@for(s(i):a(i,20)+a(i,21)<=1);
@for(s(i):a(i,21)+a(i,24)<=1);
@for(s(i):a(i,21)+a(i,23)<=1);
@for(s(i):a(i,23)+a(i,24)<=1);
@for(s(i):a(i,21)+a(i,22)<=1);
@for(s(i):a(i,13)+a(i,7)<=1);
@for(s(i):a(i,13)+a(i,8)<=1);
@for(s(i):a(i,8)+a(i,7)<=1);
@for(s(i):a(i,8)+a(i,9)<=1);
@for(s(i):a(i,8)+a(i,10)<=1);
@for(s(i):a(i,9)+a(i,10)<=1);
@for(s(i):a(i,10)+a(i,11)<=1);
@for(s(i):a(i,10)+a(i,12)<=1);
@for(s(i):a(i,11)+a(i,12)<=1);
@for(s(i):a(i,7)+a(i,5)<=1);
@for(s(i):a(i,7)+a(i,6)<=1);
@for(s(i):a(i,5)+a(i,6)<=1);
@for(s(i):a(i,5)+a(i,4)<=1);
@for(s(i):a(i,5)+a(i,3)<=1);
@for(s(i):a(i,3)+a(i,4)<=1);
@for(s(i):a(i,6)+a(i,2)<=1);
@for(s(i):a(i,6)+a(i,1)<=1);
@for(s(i):a(i,1)+a(i,2)<=1);
@for(s(i):a(i,13)+a(i,19)<=1);
作者: sorjor    时间: 2012-12-15 11:22
  Local optimal solution found.
  Objective value:                              0.000000
  Objective bound:                              0.000000
  Infeasibilities:                              0.000000
  Extended solver steps:                              26
  Total solver iterations:                          1531


                                           Variable           Value
                                                  Z        0.000000
                                              K( 1)        0.000000
                                              K( 2)        0.000000
                                              K( 3)        0.000000
                                              K( 4)        0.000000
                                              K( 5)        0.000000
                                              L( 1)        0.000000
                                              L( 2)        0.000000
                                              L( 3)        0.000000
                                              L( 4)        0.000000
                                              L( 5)        0.000000
                                              L( 6)        0.000000
                                              L( 7)        0.000000
                                              L( 8)        0.000000
                                              L( 9)        0.000000
                                             L( 10)        0.000000
                                             L( 11)        0.000000
                                             L( 12)        0.000000
                                             L( 13)        0.000000
                                             L( 14)        0.000000
                                             L( 15)        0.000000
                                             L( 16)        0.000000
                                             L( 17)        0.000000
                                             L( 18)        0.000000
                                             L( 19)        0.000000
                                             L( 20)        0.000000
                                             L( 21)        0.000000
                                             L( 22)        0.000000
                                             L( 23)        0.000000
                                             L( 24)        0.000000
                                             L( 25)        0.000000
                                             L( 26)        0.000000
                                             L( 27)        0.000000
                                           A( 1, 1)        0.000000
                                           A( 1, 2)        1.000000
                                           A( 1, 3)        0.000000
                                           A( 1, 4)        0.000000
                                           A( 1, 5)        1.000000
                                           A( 1, 6)        0.000000
                                           A( 1, 7)        0.000000
                                           A( 1, 8)        0.000000
                                           A( 1, 9)        0.000000
                                          A( 1, 10)        1.000000
                                          A( 1, 11)        0.000000
                                          A( 1, 12)        0.000000
                                          A( 1, 13)        1.000000
                                          A( 1, 14)        0.000000
                                          A( 1, 15)        1.000000
                                          A( 1, 16)        0.000000
                                          A( 1, 17)        0.000000
                                          A( 1, 18)        1.000000
                                          A( 1, 19)        0.000000
                                          A( 1, 20)        1.000000
                                          A( 1, 21)        0.000000
                                          A( 1, 22)        0.000000
                                          A( 1, 23)        1.000000
                                          A( 1, 24)        0.000000
                                          A( 1, 25)        0.000000
                                          A( 1, 26)        0.000000
                                          A( 1, 27)        1.000000
                                           A( 2, 1)        1.000000
                                           A( 2, 2)        0.000000
                                           A( 2, 3)        0.000000
                                           A( 2, 4)        1.000000
                                           A( 2, 5)        0.000000
                                           A( 2, 6)        0.000000
                                           A( 2, 7)        0.000000
                                           A( 2, 8)        0.000000
                                           A( 2, 9)        1.000000
                                          A( 2, 10)        0.000000
                                          A( 2, 11)        0.000000
                                          A( 2, 12)        0.000000
                                          A( 2, 13)        0.000000
                                          A( 2, 14)        0.000000
                                          A( 2, 15)        0.000000
                                          A( 2, 16)        0.000000
                                          A( 2, 17)        1.000000
                                          A( 2, 18)        0.000000
                                          A( 2, 19)        1.000000
                                          A( 2, 20)        0.000000
                                          A( 2, 21)        0.000000
                                          A( 2, 22)        1.000000
                                          A( 2, 23)        0.000000
                                          A( 2, 24)        1.000000
                                          A( 2, 25)        0.000000
                                          A( 2, 26)        1.000000
                                          A( 2, 27)        0.000000
                                           A( 3, 1)        0.000000
                                           A( 3, 2)        0.000000
                                           A( 3, 3)        0.000000
                                           A( 3, 4)        0.000000
                                           A( 3, 5)        0.000000
                                           A( 3, 6)        0.000000
                                           A( 3, 7)        1.000000
                                           A( 3, 8)        0.000000
                                           A( 3, 9)        0.000000
                                          A( 3, 10)        0.000000
                                          A( 3, 11)        1.000000
                                          A( 3, 12)        0.000000
                                          A( 3, 13)        0.000000
                                          A( 3, 14)        0.000000
                                          A( 3, 15)        0.000000
                                          A( 3, 16)        1.000000
                                          A( 3, 17)        0.000000
                                          A( 3, 18)        0.000000
                                          A( 3, 19)        0.000000
                                          A( 3, 20)        0.000000
                                          A( 3, 21)        1.000000
                                          A( 3, 22)        0.000000
                                          A( 3, 23)        0.000000
                                          A( 3, 24)        0.000000
                                          A( 3, 25)        1.000000
                                          A( 3, 26)        0.000000
                                          A( 3, 27)        0.000000
                                           A( 4, 1)        0.000000
                                           A( 4, 2)        0.000000
                                           A( 4, 3)        1.000000
                                           A( 4, 4)        0.000000
                                           A( 4, 5)        0.000000
                                           A( 4, 6)        1.000000
                                           A( 4, 7)        0.000000
                                           A( 4, 8)        1.000000
                                           A( 4, 9)        0.000000
                                          A( 4, 10)        0.000000
                                          A( 4, 11)        0.000000
                                          A( 4, 12)        1.000000
                                          A( 4, 13)        0.000000
                                          A( 4, 14)        1.000000
                                          A( 4, 15)        0.000000
                                          A( 4, 16)        0.000000
                                          A( 4, 17)        0.000000
                                          A( 4, 18)        0.000000
                                          A( 4, 19)        0.000000
                                          A( 4, 20)        0.000000
                                          A( 4, 21)        0.000000
                                          A( 4, 22)        0.000000
                                          A( 4, 23)        0.000000
                                          A( 4, 24)        0.000000
                                          A( 4, 25)        0.000000
                                          A( 4, 26)        0.000000
                                          A( 4, 27)        0.000000
                                           A( 5, 1)        0.000000
                                           A( 5, 2)        0.000000
                                           A( 5, 3)        0.000000
                                           A( 5, 4)        0.000000
                                           A( 5, 5)        0.000000
                                           A( 5, 6)        0.000000
                                           A( 5, 7)        0.000000
                                           A( 5, 8)        0.000000
                                           A( 5, 9)        0.000000
                                          A( 5, 10)        0.000000
                                          A( 5, 11)        0.000000
                                          A( 5, 12)        0.000000
                                          A( 5, 13)        0.000000
                                          A( 5, 14)        0.000000
                                          A( 5, 15)        0.000000
                                          A( 5, 16)        0.000000
                                          A( 5, 17)        0.000000
                                          A( 5, 18)        0.000000
                                          A( 5, 19)        0.000000
                                          A( 5, 20)        0.000000
                                          A( 5, 21)        0.000000
                                          A( 5, 22)        0.000000
                                          A( 5, 23)        0.000000
                                          A( 5, 24)        0.000000
                                          A( 5, 25)        0.000000
                                          A( 5, 26)        0.000000
                                          A( 5, 27)        0.000000

                                                Row    Slack or Surplus
                                                  1        0.000000
                                                  2        0.000000
                                                  3        0.000000
                                                  4        0.000000
                                                  5        0.000000
                                                  6        0.000000
                                                  7        0.000000
                                                  8        0.000000
                                                  9        0.000000
                                                 10        0.000000
                                                 11        0.000000
                                                 12        0.000000
                                                 13        0.000000
                                                 14        0.000000
                                                 15        0.000000
                                                 16        0.000000
                                                 17        0.000000
                                                 18        0.000000
                                                 19        0.000000
                                                 20        0.000000
                                                 21        0.000000
                                                 22        0.000000
                                                 23        0.000000
                                                 24        0.000000
                                                 25        0.000000
                                                 26        0.000000
                                                 27        0.000000
                                                 28        0.000000
                                                 29        0.000000
                                                 30        0.000000
                                                 31        0.000000
                                                 32        0.000000
                                                 33        0.000000
                                                 34        0.000000
                                                 35        0.000000
                                                 36        0.000000
                                                 37        0.000000
                                                 38        0.000000
                                                 39        0.000000
                                                 40        0.000000
                                                 41        0.000000
                                                 42        0.000000
                                                 43        0.000000
                                                 44        0.000000
                                                 45        0.000000
                                                 46        0.000000
                                                 47        0.000000
                                                 48        0.000000
                                                 49        0.000000
                                                 50        0.000000
                                                 51        0.000000
                                                 52        0.000000
                                                 53        0.000000
                                                 54        0.000000
                                                 55        0.000000
                                                 56        0.000000
                                                 57        0.000000
                                                 58        1.000000
                                                 59        1.000000
                                                 60        1.000000
                                                 61        1.000000
                                                 62        0.000000
                                                 63        0.000000
                                                 64        1.000000
                                                 65        1.000000
                                                 66        0.000000
                                                 67        1.000000
                                                 68        0.000000
                                                 69        1.000000
                                                 70        1.000000
                                                 71        0.000000
                                                 72        1.000000
                                                 73        0.000000
                                                 74        1.000000
                                                 75        1.000000
                                                 76        0.000000
                                                 77        1.000000
                                                 78        1.000000
                                                 79        0.000000
                                                 80        1.000000
                                                 81        1.000000
                                                 82        1.000000
                                                 83        0.000000
                                                 84        0.000000
                                                 85        1.000000
                                                 86        0.000000
                                                 87        1.000000
                                                 88        1.000000
                                                 89        0.000000
                                                 90        1.000000
                                                 91        1.000000
                                                 92        0.000000
                                                 93        1.000000
                                                 94        0.000000
                                                 95        1.000000
                                                 96        1.000000
                                                 97        0.000000
                                                 98        0.000000
                                                 99        1.000000
                                                100        1.000000
                                                101        0.000000
                                                102        0.000000
                                                103        1.000000
                                                104        1.000000
                                                105        1.000000
                                                106        1.000000
                                                107        0.000000
                                                108        0.000000
                                                109        1.000000
                                                110        1.000000
                                                111        0.000000
                                                112        1.000000
                                                113        0.000000
                                                114        1.000000
                                                115        1.000000
                                                116        0.000000
                                                117        0.000000
                                                118        1.000000
                                                119        1.000000
                                                120        1.000000
                                                121        0.000000
                                                122        1.000000
                                                123        0.000000
                                                124        1.000000
                                                125        1.000000
                                                126        0.000000
                                                127        0.000000
                                                128        1.000000
                                                129        1.000000
                                                130        1.000000
                                                131        0.000000
                                                132        1.000000
                                                133        0.000000
                                                134        1.000000
                                                135        1.000000
                                                136        1.000000
                                                137        0.000000
                                                138        0.000000
                                                139        1.000000
                                                140        1.000000
                                                141        0.000000
                                                142        1.000000
                                                143        0.000000
                                                144        1.000000
                                                145        1.000000
                                                146        0.000000
                                                147        0.000000
                                                148        1.000000
                                                149        1.000000
                                                150        1.000000
                                                151        1.000000
                                                152        0.000000
                                                153        0.000000
                                                154        1.000000
                                                155        1.000000
                                                156        0.000000
                                                157        1.000000
                                                158        0.000000
                                                159        1.000000
                                                160        1.000000
                                                161        0.000000
                                                162        1.000000
                                                163        1.000000
                                                164        0.000000
                                                165        1.000000
                                                166        1.000000
                                                167        1.000000
                                                168        0.000000
                                                169        0.000000
                                                170        1.000000
                                                171        1.000000
                                                172        0.000000
                                                173        1.000000
                                                174        0.000000
                                                175        1.000000
                                                176        0.000000
                                                177        1.000000
                                                178        1.000000
                                                179        0.000000
                                                180        1.000000
                                                181        0.000000
                                                182        0.000000
                                                183        1.000000
                                                184        1.000000
                                                185        1.000000
                                                186        0.000000
                                                187        1.000000
                                                188        0.000000
                                                189        1.000000
                                                190        1.000000
                                                191        0.000000
                                                192        1.000000
                                                193        1.000000
                                                194        0.000000
                                                195        1.000000
                                                196        1.000000
                                                197        1.000000
                                                198        0.000000
                                                199        0.000000
                                                200        1.000000
                                                201        0.000000
                                                202        1.000000
                                                203        0.000000
                                                204        1.000000
                                                205        1.000000
                                                206        1.000000
                                                207        1.000000
                                                208        0.000000
                                                209        0.000000
                                                210        1.000000
                                                211        0.000000
                                                212        1.000000
                                                213        1.000000
                                                214        0.000000
                                                215        1.000000
                                                216        0.000000
                                                217        0.000000
                                                218        1.000000
                                                219        1.000000
                                                220        1.000000
                                                221        0.000000
                                                222        1.000000
                                                223        1.000000
                                                224        0.000000
                                                225        1.000000
                                                226        1.000000
                                                227        0.000000
                                                228        1.000000
                                                229        0.000000
                                                230        1.000000
                                                231        0.000000
                                                232        1.000000
                                                233        1.000000
                                                234        0.000000
                                                235        1.000000
                                                236        1.000000
                                                237        0.000000
                                                238        1.000000
                                                239        0.000000
                                                240        1.000000
                                                241        0.000000
                                                242        0.000000
                                                243        1.000000
                                                244        1.000000
                                                245        1.000000
                                                246        0.000000
                                                247        0.000000
                                                248        1.000000
                                                249        1.000000
                                                250        1.000000


作者: LWQGG    时间: 2012-12-15 13:42
万分感谢啊,把目标函数中的k改为i,就是我想要的结果
作者: LWQGG    时间: 2012-12-15 14:00
sorjor 发表于 2012-12-15 11:22
Local optimal solution found.
  Objective value:                              0.000000
  Objecti ...

能不能帮我看一下这个程序的问题出现在哪,结果出不来

min=z;
SETS:
s/1..250/:k;
b/1..27/:l,T;
links(s,b):a;
ENDSETS
DATA:
T=30 41 40 70 10 80 32 24 50 80 10 44 90 32 21 80 36 45 70 70 90 42 44 50 70 90 12;
ENDDATA
@for(s(i)for(b(j)bin(a(i,j))));
@FOR(b(j)sum(s(i):i*a(i,j)+T(j))<=z);
@FOR(b(j)sum(s(i):a(i,j))=T(j));
@for(s(i):a(i,17)+a(i,18)<=1);
@for(s(i):a(i,16)+a(i,17)<=1);
@for(s(i):a(i,16)+a(i,18)<=1);
@for(s(i):a(i,16)+a(i,15)<=1);
@for(s(i):a(i,14)+a(i,15)<=1);
@for(s(i):a(i,14)+a(i,16)<=1);
@for(s(i):a(i,14)+a(i,13)<=1);
@for(s(i):a(i,14)+a(i,19)<=1);
@for(s(i):a(i,19)+a(i,25)<=1);
@for(s(i):a(i,19)+a(i,20)<=1);
@for(s(i):a(i,25)+a(i,26)<=1);
@for(s(i):a(i,25)+a(i,27)<=1);
@for(s(i):a(i,26)+a(i,27)<=1);
@for(s(i):a(i,25)+a(i,20)<=1);
@for(s(i):a(i,20)+a(i,22)<=1);
@for(s(i):a(i,20)+a(i,21)<=1);
@for(s(i):a(i,21)+a(i,24)<=1);
@for(s(i):a(i,21)+a(i,23)<=1);
@for(s(i):a(i,23)+a(i,24)<=1);
@for(s(i):a(i,21)+a(i,22)<=1);
@for(s(i):a(i,13)+a(i,7)<=1);
@for(s(i):a(i,13)+a(i,8)<=1);
@for(s(i):a(i,8)+a(i,7)<=1);
@for(s(i):a(i,8)+a(i,9)<=1);
@for(s(i):a(i,8)+a(i,10)<=1);
@for(s(i):a(i,9)+a(i,10)<=1);
@for(s(i):a(i,10)+a(i,11)<=1);
@for(s(i):a(i,10)+a(i,12)<=1);
@for(s(i):a(i,11)+a(i,12)<=1);
@for(s(i):a(i,7)+a(i,5)<=1);
@for(s(i):a(i,7)+a(i,6)<=1);
@for(s(i):a(i,5)+a(i,6)<=1);
@for(s(i):a(i,5)+a(i,4)<=1);
@for(s(i):a(i,5)+a(i,3)<=1);
@for(s(i):a(i,3)+a(i,4)<=1);
@for(s(i):a(i,6)+a(i,2)<=1);
@for(s(i):a(i,6)+a(i,1)<=1);
@for(s(i):a(i,1)+a(i,2)<=1);
@for(s(i):a(i,13)+a(i,19)<=1);
end


作者: sorjor    时间: 2012-12-15 17:12
你模型中的Z是一个数,还是一个集?


作者: sorjor    时间: 2012-12-15 17:20
本帖最后由 sorjor 于 2012-12-15 18:05 编辑

如果z是一个数,模型可以这么修改:

min=z;
SETS:
s/1..250/:k;
b/1..27/:l,T;
links(s,b):a;
ENDSETS
DATA:
T=30 41 40 70 10 80 32 24 50 80 10 44 90 32 21 80 36 45 70 70 90 42 44 50 70 90 12;
ENDDATA
@for(s(i):@for(b(j):@bin(a(i,j))));
!@FOR(b(j):@sum(s(i):i*a(i,j)+T(j))<=z);!这个z是一个集;
@sum(b(j):@sum(s(i):i*a(i,j)+T(j)))<=z;!这个z是一个数;
@FOR(b(j):@sum(s(i):a(i,j))=T(j));
@for(s(i):a(i,17)+a(i,18)<=1);
@for(s(i):a(i,16)+a(i,17)<=1);
@for(s(i):a(i,16)+a(i,18)<=1);
@for(s(i):a(i,16)+a(i,15)<=1);
@for(s(i):a(i,14)+a(i,15)<=1);
@for(s(i):a(i,14)+a(i,16)<=1);
@for(s(i):a(i,14)+a(i,13)<=1);
@for(s(i):a(i,14)+a(i,19)<=1);
@for(s(i):a(i,19)+a(i,25)<=1);
@for(s(i):a(i,19)+a(i,20)<=1);
@for(s(i):a(i,25)+a(i,26)<=1);
@for(s(i):a(i,25)+a(i,27)<=1);
@for(s(i):a(i,26)+a(i,27)<=1);
@for(s(i):a(i,25)+a(i,20)<=1);
@for(s(i):a(i,20)+a(i,22)<=1);
@for(s(i):a(i,20)+a(i,21)<=1);
@for(s(i):a(i,21)+a(i,24)<=1);
@for(s(i):a(i,21)+a(i,23)<=1);
@for(s(i):a(i,23)+a(i,24)<=1);
@for(s(i):a(i,21)+a(i,22)<=1);
@for(s(i):a(i,13)+a(i,7)<=1);
@for(s(i):a(i,13)+a(i,8)<=1);
@for(s(i):a(i,8)+a(i,7)<=1);
@for(s(i):a(i,8)+a(i,9)<=1);
@for(s(i):a(i,8)+a(i,10)<=1);
@for(s(i):a(i,9)+a(i,10)<=1);
@for(s(i):a(i,10)+a(i,11)<=1);
@for(s(i):a(i,10)+a(i,12)<=1);
@for(s(i):a(i,11)+a(i,12)<=1);
@for(s(i):a(i,7)+a(i,5)<=1);
@for(s(i):a(i,7)+a(i,6)<=1);
@for(s(i):a(i,5)+a(i,6)<=1);
@for(s(i):a(i,5)+a(i,4)<=1);
@for(s(i):a(i,5)+a(i,3)<=1);
@for(s(i):a(i,3)+a(i,4)<=1);
@for(s(i):a(i,6)+a(i,2)<=1);
@for(s(i):a(i,6)+a(i,1)<=1);
@for(s(i):a(i,1)+a(i,2)<=1);
@for(s(i):a(i,13)+a(i,19)<=1);
end

结果如下:

  Global optimal solution found.
  Objective value:                              442724.0
  Objective bound:                              442724.0
  Infeasibilities:                              0.000000
  Extended solver steps:                               0
  Total solver iterations:                          4646
作者: sorjor    时间: 2012-12-15 18:04
本帖最后由 sorjor 于 2012-12-15 18:06 编辑

如果z是一个集,可以求集合z 和的最小值

模型如下:

SETS:
s/1..250/:k;
b/1..27/:l,T;
o/1..27/:z;
links(s,b):a;
ENDSETS
DATA:
T=30 41 40 70 10 80 32 24 50 80 10 44 90 32 21 80 36 45 70 70 90 42 44 50 70 90 12;
ENDDATA

min=@sum(o(j):z(j));

@for(s(i):@for(b(j):@bin(a(i,j))));
!@FOR(b(j):@sum(s(i):i*a(i,j)+T(j))<=z);
@for(b(j):@sum(s(i):i*a(i,j)+T(j))<=z(j));
!@sum(b(j):@sum(s(i):i*a(i,j)+T(j)))<=z;
@FOR(b(j):@sum(s(i):a(i,j))=T(j));
@for(s(i):a(i,17)+a(i,18)<=1);
@for(s(i):a(i,16)+a(i,17)<=1);
@for(s(i):a(i,16)+a(i,18)<=1);
@for(s(i):a(i,16)+a(i,15)<=1);
@for(s(i):a(i,14)+a(i,15)<=1);
@for(s(i):a(i,14)+a(i,16)<=1);
@for(s(i):a(i,14)+a(i,13)<=1);
@for(s(i):a(i,14)+a(i,19)<=1);
@for(s(i):a(i,19)+a(i,25)<=1);
@for(s(i):a(i,19)+a(i,20)<=1);
@for(s(i):a(i,25)+a(i,26)<=1);
@for(s(i):a(i,25)+a(i,27)<=1);
@for(s(i):a(i,26)+a(i,27)<=1);
@for(s(i):a(i,25)+a(i,20)<=1);
@for(s(i):a(i,20)+a(i,22)<=1);
@for(s(i):a(i,20)+a(i,21)<=1);
@for(s(i):a(i,21)+a(i,24)<=1);
@for(s(i):a(i,21)+a(i,23)<=1);
@for(s(i):a(i,23)+a(i,24)<=1);
@for(s(i):a(i,21)+a(i,22)<=1);
@for(s(i):a(i,13)+a(i,7)<=1);
@for(s(i):a(i,13)+a(i,8)<=1);
@for(s(i):a(i,8)+a(i,7)<=1);
@for(s(i):a(i,8)+a(i,9)<=1);
@for(s(i):a(i,8)+a(i,10)<=1);
@for(s(i):a(i,9)+a(i,10)<=1);
@for(s(i):a(i,10)+a(i,11)<=1);
@for(s(i):a(i,10)+a(i,12)<=1);
@for(s(i):a(i,11)+a(i,12)<=1);
@for(s(i):a(i,7)+a(i,5)<=1);
@for(s(i):a(i,7)+a(i,6)<=1);
@for(s(i):a(i,5)+a(i,6)<=1);
@for(s(i):a(i,5)+a(i,4)<=1);
@for(s(i):a(i,5)+a(i,3)<=1);
@for(s(i):a(i,3)+a(i,4)<=1);
@for(s(i):a(i,6)+a(i,2)<=1);
@for(s(i):a(i,6)+a(i,1)<=1);
@for(s(i):a(i,1)+a(i,2)<=1);
@for(s(i):a(i,13)+a(i,19)<=1);
end

结果如下

  Global optimal solution found.
  Objective value:                              442724.0
  Objective bound:                              442724.0
  Infeasibilities:                              0.000000
  Extended solver steps:                               0
  Total solver iterations:                          4646

运行结果与上面一样。区别就是可以求出各个z(j)的值。

作者: LWQGG    时间: 2012-12-15 19:12
sorjor 发表于 2012-12-15 18:04
如果z是一个集,可以求集合z 和的最小值

模型如下:

这一句代码错在哪了:@for(s(i)if((a(i,1)#eq#1),s(k)|k#gt#i#and#k#lt#i+30:i+30:a(k,1)=1),a(i,1)=0));

作者: LWQGG    时间: 2012-12-15 19:22
sorjor 发表于 2012-12-15 18:04
如果z是一个集,可以求集合z 和的最小值

模型如下:

@for(s(i)if((a(i,1)#eq#1),s(k)|k#gt#i#and#k#lt#i+30:a(k,1)=1,a(i,1)=0));
是这一句,我想做的是当a(i,1)=1时,之后30个a值都置1




欢迎光临 数学建模社区-数学中国 (http://www.madio.net/) Powered by Discuz! X2.5