Arielle_陈 发表于 2014-4-19 11:08

求助lingo error code 161

sets:    recycling/ 1.. 6/: r1;    sorting/ 1.. 6/: f1, y1, g1, a1;    reproducing/ 1.. 4/: f2,y2,g2,a2;    processing/ 1.. 2/;    links1( recycling, sorting): x1, c1;    links2( sorting, reproducing): x2, c2;    links3( sorting, processing): x3, c3;endsetsmax= @sum( links2( j, k): x2( j, k))* 900 +@sum( links3( j, m): x3( j, m))* 40.8-@sum( links1( i, j): x1( i, j)* c1( i, j))-@sum( links2( j, k): x2( j, k)* c2( j, k))-@sum( links3( j, m): x3( j, m)* c3( j, m))-@sum( sorting( j): f1( j)* y1( j))-@sum( reproducing( k): f2( k)* y2( k))-@sum( sorting( j): g1( j)* @sum( recycling( i): x1( i, j)))-@ sum( reproducing( k): g2( k)* @sum( sorting( j): x2(j, k)));@for( recycling( i):
@sum( sorting( j): x1( i, j))= r1(i));@for( sorting( j): @sum( recycling: x1( i, j))=@sum( reproducing: x2( j, p))+@sum( processing: x3( j, m)));@for( sorting( j):@sum( recycling: x1( i, j))=0.8* @sum( reproducing: x2( j, p)));@for( sorting( j):@sum( recycling: x1( i, j))<= a1( j)* y1( j));@for( reproducing( k):
@sum(sorting: x2( j, k)) <= a2 ( k)* y2 ( k));@for (reproducing( k):@bin( y2( k)));
@for (sorting( j):@bin( y1( j)));data:r1= 1917 19597 6571 72039 1614274450;f1= 100000 170000 120000 175000115000 180000;f2= 400000 385000 420000 370000;g1= 250 270 265 290 275 300;g2= 450 320 400 380;a1= 70000 85000 75000 8000075000 85000;a2= 80000 75000 8500070000c1= 0 238 371 480954.8 477.82    238 0 136.8 295.05 726.6 282.87    371 136.85 0 165.2 656.25 153.02    480 295.05 165.2 0 701.75 12.425    954.8 726.6 656.25 701.75 0 693.7    477.82 282.87 153.02 12.425 693.7 0;c2= 479.85 295.05165.2 0 701.75 12.425    479.5 276.15 147.35 22.4 687.75 10.045    679 442.8 315 318.5 299.3 222.6    459.2 290.36 161.84 23.625 713.79 20.965;c3= 479.85 295.05168.2 0 701.75 12.425    459.2 290.36 161.84 23.625 713.79 20.965;enddata
http://g.hiphotos.baidu.com/zhidao/pic/item/b58f8c5494eef01f1ca8405de2fe9925bd317ded.jpg

madio 发表于 2014-4-19 11:17

你的数据有点乱,要求是6的,有的就出现了5个,调整一下数据

Arielle_陈 发表于 2014-4-19 16:32

madio 发表于 2014-4-19 11:17 static/image/common/back.gif
你的数据有点乱,要求是6的,有的就出现了5个,调整一下数据
数据改过了,还是显示这个错误
sets:
    recycling/ 1.. 6/: r1;
    sorting/ 1.. 6/: f1,y1,g1,a1;
    reproducing/ 1.. 4/: f2,y2,g2,a2;
    processing/ 1.. 2/;
    links1( recycling, sorting): x1, c1;
    links2( sorting, reproducing): x2, c2;
    links3( sorting, processing): x3, c3;
endsets
max= @sum( links2( j, k): x2( j, k))* 900 +@sum( links3( j, m): x3( j, m))* 40.8
-@sum( links1( i, j): x1( i, j)* c1( i, j))-@sum( links2( j, k): x2( j, k)* c2( j, k))-@sum( links3( j, m): x3( j, m)* c3( j, m))
-@sum( sorting( j): f1( j)* y1( j))-@sum( reproducing( k): f2( k)* y2( k))
-@sum( sorting( j): g1( j)* @sum( recycling( i): x1( i, j)))-@ sum( reproducing( k): g2( k)* @sum( sorting( j): x2(j, k)));
@for( recycling( i):
@sum( sorting( j): x1( i, j))= r1(i));
@for( sorting( j):
@sum( recycling: x1( i, j))=@sum( reproducing: x2( j, p))+@sum( processing: x3( j, m)));
@for( sorting( j):
@sum( recycling: x1( i, j))=0.8* @sum( reproducing: x2( j, p)));
@for( sorting( j):
@sum( recycling: x1( i, j))<= a1( j)* y1( j));
@for( reproducing( k):
@sum(sorting: x2( j, k)) <= a2 ( k)* y2 ( k));
@for (reproducing( k):@bin( y2( k)));
@for (sorting( j):@bin( y1( j)));
data:
r1= 1917, 19597, 6571, 72039, 16142, 74450;
f1= 100000, 170000, 120000, 175000, 115000, 180000;
f2= 400000, 385000, 420000, 370000;
g1= 250, 270, 265, 290, 275, 300;
g2= 450, 320, 400, 380;
a1= 70000, 85000, 75000, 80000, 75000, 85000;
a2= 80000, 75000, 85000, 70000;
c1= 0, 238, 371, 480, 954.8, 477.82
    238, 0, 136.8, 295.05, 726.6, 282.87
    371, 136.85, 0, 165.2, 656.25, 153.02
    480, 295.05, 165.2, 0, 701.75, 12.425
    954.8, 726.6, 656.25, 701.75, 0, 693.7
    477.82, 282.87, 153.02, 12.425, 693.7, 0;
c2= 479.85, 295.05, 165.2, 0, 701.75, 12.425
    479.5, 276.15, 147.35, 22.4, 687.75, 10.045
    679, 442.8, 315, 318.5, 299.3, 222.6
    459.2, 290.36, 161.84, 23.625, 713.79, 20.965;
c3= 479.85, 295.05, 168.2, 0, 701.75, 12.425
    459.2, 290.36, 161.84, 23.625, 713.79, 20.965;
enddata

wujianjack2 发表于 2014-4-20 00:08

修改后模型可以运行,但是无可行解。
P.S. 因为你有些数据连在一块儿了,但是我不清楚具体数据是怎样分开的,就按照自己的理解做的。

代码:
sets:
    recycling/ 1.. 6/: r1;
    sorting/ 1.. 6/: f1, y1, g1, a1;
    reproducing/ 1.. 4/: f2,y2,g2,a2;
    processing/ 1.. 2/;
    links1( recycling, sorting): x1, c1;
    links2( sorting, reproducing): x2, c2;
    links3( sorting, processing): x3, c3;
endsets
max= @sum( links2( j, k): x2( j, k))* 900 +@sum( links3( j, m): x3( j, m))* 40.8
-@sum( links1( i, j): x1( i, j)* c1( i, j))-@sum( links2( j, k): x2( j, k)* c2( j, k))-@sum( links3( j, m): x3( j, m)* c3( j, m))
-@sum( sorting( j): f1( j)* y1( j))-@sum( reproducing( k): f2( k)* y2( k))
-@sum( sorting( j): g1( j)* @sum( recycling( i): x1( i, j)))-@sum( reproducing( k): g2( k)* @sum( sorting( j): x2(j, k)));
@for( recycling( i):@sum( sorting( j): x1( i, j))= r1(i));
@for( sorting( j):@sum( recycling(i): x1( i, j))=@sum( reproducing(p): x2( j, p))+@sum( processing(m): x3( j, m)));
@for( sorting( j):@sum( recycling(i): x1( i, j))=0.8* @sum( reproducing(p): x2( j, p)));
@for( sorting( j):@sum( recycling(i): x1( i, j))<= a1( j)* y1( j));
@for( reproducing( k): @sum(sorting(j): x2( j, k)) <= a2 ( k)* y2 ( k));
@for (reproducing( k):@bin( y2( k)));
@for (sorting( j):@bin( y1( j)));
data:
r1= 1917 19597 6571 72039 16142 74450;
f1= 100000 170000 120000 175000 115000 180000;
f2= 400000 385000 420000 370000;
g1= 250 270 265 290 275 300;
g2= 450 320 400 380;
a1= 70000 85000 75000 80000 75000 85000;
a2= 80000 75000 85000 70000;
c1= 0 238 371 480 954.8 477.82
    238 0 136.8 295.05 726.6 282.87
    371 136.85 0 165.2 656.25 153.02
    480 295.05 165.2 0 701.75 12.425
    954.8 726.6 656.25 701.75 0 693.7
    477.82 282.87 153.02 12.425 693.7 0;
c2= 479.85 295.05 165.2 0 701.75 12.425
    479.5 276.15 147.35 22.4 687.75 10.045
    679 442.8 315 318.5 299.3 222.6
    459.2 290.36 161.84 23.625 713.79 20.965;
c3= 479.85 295.05 168.2 0 701.75 12.425
    459.2 290.36 161.84 23.625 713.79 20.965;
enddata

模型之所以无解的原因是:
    X1_4_1 + X1_4_2 + X1_4_3 + X1_4_4 + X1_4_5 + X1_4_6 = 72039 ;
    X1_6_1 + X1_6_2 + X1_6_3 + X1_6_4 + X1_6_5 + X1_6_6 = 74450 ;
    X1_2_1 + X1_2_2 + X1_2_3 + X1_2_4 + X1_2_5 + X1_2_6 = 19597 ;
这几个约束有问题。

  另,我已不做版主了,我时间不多,有时候心情好就回答下问题,如果你有后续问题,请自行解决。

madio 发表于 2014-4-20 01:02

出错的一句换一个指标变量就可以了,但是模型确实有问题,像版主所说的一样。
@for (sorting(jj):@bin( y1(jj)));
页: [1]
查看完整版本: 求助lingo error code 161