数学建模社区-数学中国

标题: 求助lingo error code 161 [打印本页]

作者: 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;

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 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 8500070000

c1= 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


作者: madio    时间: 2014-4-19 11:17
你的数据有点乱,要求是6的,有的就出现了5个,调整一下数据
作者: Arielle_陈    时间: 2014-4-19 16:32
madio 发表于 2014-4-19 11:17
你的数据有点乱,要求是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

模型之所以无解的原因是:
   [_5] X1_4_1 + X1_4_2 + X1_4_3 + X1_4_4 + X1_4_5 + X1_4_6 = 72039 ;
   [_7] X1_6_1 + X1_6_2 + X1_6_3 + X1_6_4 + X1_6_5 + X1_6_6 = 74450 ;
   [_3] 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)));




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