7# casinoroyale
还有, 你怎么知道我叫兔子?
顶一顶~~~~
见过没玩过,
写了个非常简单的模型, 但是模型运行出错, 没能找出原因.
错误提示是没有可行解.MODEL:
SETS:
ROW/0,1,2,3,4,5,6/;
COL/0,1,2,3,4,5,6/;
POINT(ROW,COL):lv1,lv2,lv3,lv4;
ENDSETS
DATA:
lv1 =
0,0,0,0,0,0,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0,0,0,0,0,0,0;
lv2 =
0,0,0,0,0,0,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0,0,0,0,0,0,0;
lv3 =
0,0,0,0,0,0,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0,0,0,0,0,0,0;
lv4 =
0,0,0,0,0,0,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0, , , , , ,0,
0,0,0,0,0,0,0;
ENDDATA
! lv1,lv2,lv3,lv4 should be 0-1 variable;
@FOR(POINT(i,j):@BIN(lv1););
@FOR(POINT(i,j):@BIN(lv2););
@FOR(POINT(i,j):@BIN(lv3););
@FOR(POINT(i,j):@BIN(lv4););
! Only ONE building can be placed in one place;
@FOR(POINT(i,j)|(i#GT#1)#AND#(i#LT#5)#AND#(j#GT#1)#AND#(j#LT#5):lv1+lv2+lv3+lv4=1);
! @FOR(POINT(i,j)|(lv2#EQ#1)#AND#(i#GE#1)#AND#(i#LE#5)#AND#(j#GE#1)#AND#(j#LE#5):
lv1(i-1,j)+lv1(i+1,j)+lv1(i,j-1)+lv1(i,j+1)>1);
! @FOR(POINT(i,j)|(lv3#EQ#1)#AND#(i#GE#1)#AND#(i#LE#5)#AND#(j#GE#1)#AND#(j#LE#5):
lv1(i-1,j)+lv1(i+1,j)+lv1(i,j-1)+lv1(i,j+1)>1);
! @FOR(POINT(i,j)|(lv3#EQ#1)#AND#(i#GE#1)#AND#(i#LE#5)#AND#(j#GE#1)#AND#(j#LE#5):
lv2(i-1,j)+lv2(i+1,j)+lv2(i,j-1)+lv2(i,j+1)>1);
! @FOR(POINT(i,j)|(lv4#EQ#1)#AND#(i#GE#1)#AND#(i#LE#5)#AND#(j#GE#1)#AND#(j#LE#5):
lv1(i-1,j)+lv1(i+1,j)+lv1(i,j-1)+lv1(i,j+1)>1);
! @FOR(POINT(i,j)|(lv4#EQ#1)#AND#(i#GE#1)#AND#(i#LE#5)#AND#(j#GE#1)#AND#(j#LE#5):
lv2(i-1,j)+lv2(i+1,j)+lv2(i,j-1)+lv2(i,j+1)>1);
! @FOR(POINT(i,j)|(lv4#EQ#1)#AND#(i#GE#1)#AND#(i#LE#5)#AND#(j#GE#1)#AND#(j#LE#5):
lv3(i-1,j)+lv3(i+1,j)+lv3(i,j-1)+lv3(i,j+1)>1);
MAX = population;
population = @SUM(POINT(i,j):100*lv1+400*lv2+700*lv3+1000*lv4);
INIT:
lv1 =
0 0 0 0 0 0 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 0 0 0 0 0 0;
lv2 =
0 0 0 0 0 0 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 1 1 1 1 1 0
0 0 0 0 0 0 0;
lv3 =
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0;
lv4 =
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0
0 0 0 0 0 0 0;
ENDINIT
END
下下来看看!不知道能不能用整数规划做!!
15# mine_12
思路应该就是 0-1 规划吧.
撒旦回归了
建模无处不在啊~~长见识了
这题目真有趣
我觉得用0-1规划的方法应该可行,但是 LINGO 程序写出来提示有问题。
我把所有的语句都给注释掉之后,只留下这一句,仍然提示没有可行解。 @FOR(POINT(i,j)|(i#GT#1)#AND#(i#LT#5)#AND#(j#GT#1)#AND#(j#LT#5):lv1+lv2+lv3+lv4=1);