1、铁路平板车装货问题令 为第 i 种的货物装到第一辆车的数量, 为第 i 种的货1 2物装到第二辆车的数量; 为第 i 种货物的厚度; 为第 i 种货物 的重量; 为第 i 种货物的件数。建立数学模型:Max z=7=1()(1+2)s.t.7=1(1+2)7=140000(=1,2)7=11020(=1,2)7=5302.7(=1,2)解出可行解,有如下 lingo 程序:model:sets:type/17/:t,w,c;car/1,2/;links(type,car):x;endsetsdata:c=8 7 9 6 6 4 8;t=48.7 53.0 61.3 72.0 48.7 52.0
2、 64.0;w=2000 3000 1000 500 4000 2000 1000;enddatamax=sum(type(i):t(i)*(x(i,1)+x(i,2);for(type(i):sum(type(i):x(i,1)+x(i,2)1);for(pass (i):bin(x);Data:a=1 0 1 0 0 0 0 00 0 1 0 0 0 1 00 0 1 1 0 0 0 01 0 0 1 0 0 0 00 0 0 1 0 0 1 01 1 0 0 0 0 0 0 0 0 0 1 1 0 0 00 1 0 0 1 0 0 0 0 0 0 0 1 0 1 00 0 0 0 1 1
3、 0 00 0 0 0 0 0 1 10 1 0 0 0 1 0 0 0 0 0 0 0 1 0 1;enddata end计算结果:Global optimal solution found.Objective value: 4.000000Objective bound: 4.000000Infeasibilities: 0.000000Extended solver steps: 0Total solver iterations: 0Variable Value Reduced CostX( 1) 0.000000 1.000000X( 2) 0.000000 1.000000X( 3)
4、 1.000000 1.000000X( 4) 0.000000 1.000000X( 5) 0.000000 1.000000X( 6) 1.000000 1.000000X( 7) 0.000000 1.000000X( 8) 0.000000 1.000000X( 9) 0.000000 1.000000X( 10) 1.000000 1.000000X( 11) 1.000000 1.000000X( 12) 0.000000 1.000000X( 13) 0.000000 1.000000A( 1, 1) 1.000000 0.000000A( 1, 2) 0.000000 0.00
5、0000A( 1, 3) 1.000000 0.000000A( 1, 4) 0.000000 0.000000A( 1, 5) 0.000000 0.000000A( 1, 6) 0.000000 0.000000A( 1, 7) 0.000000 0.000000A( 1, 8) 0.000000 0.000000A( 2, 1) 0.000000 0.000000A( 2, 2) 0.000000 0.000000A( 2, 3) 1.000000 0.000000A( 2, 4) 0.000000 0.000000A( 2, 5) 0.000000 0.000000A( 2, 6) 0
6、.000000 0.000000A( 2, 7) 1.000000 0.000000A( 2, 8) 0.000000 0.000000A( 3, 1) 0.000000 0.000000A( 3, 2) 0.000000 0.000000A( 3, 3) 1.000000 0.000000A( 3, 4) 1.000000 0.000000A( 3, 5) 0.000000 0.000000A( 3, 6) 0.000000 0.000000A( 3, 7) 0.000000 0.000000A( 3, 8) 0.000000 0.000000A( 4, 1) 1.000000 0.0000
7、00A( 4, 2) 0.000000 0.000000A( 4, 3) 0.000000 0.000000A( 4, 4) 1.000000 0.000000A( 4, 5) 0.000000 0.000000A( 4, 6) 0.000000 0.000000A( 4, 7) 0.000000 0.000000A( 4, 8) 0.000000 0.000000A( 5, 1) 0.000000 0.000000A( 5, 2) 0.000000 0.000000A( 5, 3) 0.000000 0.000000A( 5, 4) 1.000000 0.000000A( 5, 5) 0.0
8、00000 0.000000A( 5, 6) 0.000000 0.000000A( 5, 7) 1.000000 0.000000A( 5, 8) 0.000000 0.000000A( 6, 1) 1.000000 0.000000A( 6, 2) 1.000000 0.000000A( 6, 3) 0.000000 0.000000A( 6, 4) 0.000000 0.000000A( 6, 5) 0.000000 0.000000A( 6, 6) 0.000000 0.000000A( 6, 7) 0.000000 0.000000A( 6, 8) 0.000000 0.000000
9、A( 7, 1) 0.000000 0.000000A( 7, 2) 0.000000 0.000000A( 7, 3) 0.000000 0.000000A( 7, 4) 1.000000 0.000000A( 7, 5) 1.000000 0.000000A( 7, 6) 0.000000 0.000000A( 7, 7) 0.000000 0.000000A( 7, 8) 0.000000 0.000000A( 8, 1) 0.000000 0.000000A( 8, 2) 1.000000 0.000000A( 8, 3) 0.000000 0.000000A( 8, 4) 0.000
10、000 0.000000A( 8, 5) 1.000000 0.000000A( 8, 6) 0.000000 0.000000A( 8, 7) 0.000000 0.000000A( 8, 8) 0.000000 0.000000A( 9, 1) 0.000000 0.000000A( 9, 2) 0.000000 0.000000A( 9, 3) 0.000000 0.000000A( 9, 4) 0.000000 0.000000A( 9, 5) 1.000000 0.000000A( 9, 6) 0.000000 0.000000A( 9, 7) 1.000000 0.000000A(
11、 9, 8) 0.000000 0.000000A( 10, 1) 0.000000 0.000000A( 10, 2) 0.000000 0.000000A( 10, 3) 0.000000 0.000000A( 10, 4) 0.000000 0.000000A( 10, 5) 1.000000 0.000000A( 10, 6) 1.000000 0.000000A( 10, 7) 0.000000 0.000000A( 10, 8) 0.000000 0.000000A( 11, 1) 0.000000 0.000000A( 11, 2) 0.000000 0.000000A( 11,
12、 3) 0.000000 0.000000A( 11, 4) 0.000000 0.000000A( 11, 5) 0.000000 0.000000A( 11, 6) 0.000000 0.000000A( 11, 7) 1.000000 0.000000A( 11, 8) 1.000000 0.000000A( 12, 1) 0.000000 0.000000A( 12, 2) 1.000000 0.000000A( 12, 3) 0.000000 0.000000A( 12, 4) 0.000000 0.000000A( 12, 5) 0.000000 0.000000A( 12, 6)
13、 1.000000 0.000000A( 12, 7) 0.000000 0.000000A( 12, 8) 0.000000 0.000000A( 13, 1) 0.000000 0.000000A( 13, 2) 0.000000 0.000000A( 13, 3) 0.000000 0.000000A( 13, 4) 0.000000 0.000000A( 13, 5) 0.000000 0.000000A( 13, 6) 1.000000 0.000000A( 13, 7) 0.000000 0.000000A( 13, 8) 1.000000 0.000000Row Slack or
14、 Surplus Dual Price1 4.000000 -1.0000002 0.000000 0.0000003 0.000000 0.0000004 0.000000 0.0000005 0.000000 0.0000006 0.000000 0.0000007 0.000000 0.0000008 0.000000 0.0000009 0.000000 0.000000由结果可得:最少需要在四处安装双向摄像机:分别是过道 3,6,10,11Matlab 程序:c=ones(1,13);a=1 0 1 0 0 0 0 00 0 1 0 0 0 1 00 0 1 1 0 0 0 01 0
15、 0 1 0 0 0 00 0 0 1 0 0 1 01 1 0 0 0 0 0 00 0 0 1 1 0 0 00 1 0 0 1 0 0 00 0 0 0 1 0 1 00 0 0 0 1 1 0 00 0 0 0 0 0 1 10 1 0 0 0 1 0 00 0 0 0 0 1 0 1;A=-a;b=-1;-1;-1;-1;-1;-1;-1;-1;x,fval=bintprog(c,A,b);min=fval;y=find(x=1);disp(y);while(1)A=A;x;b=b;3;x,fval=bintprog(c,A,b);if fval=miny=find(x=1);dis
16、p(y);elsereturn;endendfprintf(最优值为:n,min);得出的结果为:Optimization terminated.3 6 10 11Optimization terminated.2 6 7 13Optimization terminated.1 7 11 12Optimization terminated.2 4 8 13Optimization terminated.3 6 9 13Optimization terminated.1 5 8 13Optimization terminated.最优值为:3 6 10 11由 matlab 程序可得装四处摄像头
17、时有六种方案:安装处分别是3 6 10 112 6 7 131 7 11 122 4 8 133 6 9 131 5 8 13对比两个程序的结果,可以看到 lingo 程序只能得出最优解,要想利用 lingo 程序得到所有符合情况的解,可以添加限制约束条件。例如,在上面的 lingo 程序中加上 x3+x6+x10+x113,可得除这项解以外的另一项最优解,以此类推可得满足条件的所有解。这些解分别为至少需要 4 个摄像机的方法一:通道 1、通道 5、通道 8、通道 13方法二:通道 3、通道 3、通道 10、通道 11方法三:通道 1、通道 7、通道 11、通道 12方法四:通道 3、通道 6、通道 9、通道 13方法五:通道 2、通道 4、通道 8、通道 13方法六:通道 2、通道 6、通道 7、通道 13;共有 6 种不同方案。