关于@text函数应用
运行0-1整型规划的问题是,我想让程序输出的结果只显示变量为1,好方便查找结果!例如:
model:!指派问题;
sets:
workers/w1..w5/;
jobs/b1..b5/;
links(workers,jobs):c,x;
endsets
data:
c=8, 6, 10,9, 12,
9 ,12, 7 ,11, 9,
7, 4 ,3 ,5, 8 ,
9 ,5, 8, 11 ,8,
4 ,6, 7 ,5, 11;
enddata
min=@sum(links:c*x);
@for(workers(i):@sum(jobs(j):x(i,j))=1);
@for(jobs(j):@sum(workers(i):x(i,j))=1);
@for(links:@bin(x));
end
运行的结果为:
Global optimal solution found.
Objective value: 30.00000
Objective bound: 30.00000
Infeasibilities: 0.000000
Extended solver steps: 0
Total solver iterations: 0
Variable Value Reduced Cost
C( W1, B1) 8.000000 0.000000
C( W1, B2) 6.000000 0.000000
C( W1, B3) 10.00000 0.000000
C( W1, B4) 9.000000 0.000000
C( W1, B5) 12.00000 0.000000
C( W2, B1) 9.000000 0.000000
C( W2, B2) 12.00000 0.000000
C( W2, B3) 7.000000 0.000000
C( W2, B4) 11.00000 0.000000
C( W2, B5) 9.000000 0.000000
C( W3, B1) 7.000000 0.000000
C( W3, B2) 4.000000 0.000000
C( W3, B3) 3.000000 0.000000
C( W3, B4) 5.000000 0.000000
C( W3, B5) 8.000000 0.000000
C( W4, B1) 9.000000 0.000000
C( W4, B2) 5.000000 0.000000
C( W4, B3) 8.000000 0.000000
C( W4, B4) 11.00000 0.000000
C( W4, B5) 8.000000 0.000000
C( W5, B1) 4.000000 0.000000
C( W5, B2) 6.000000 0.000000
C( W5, B3) 7.000000 0.000000
C( W5, B4) 5.000000 0.000000
C( W5, B5) 11.00000 0.000000
X( W1, B1) 1.000000 8.000000
X( W1, B2) 0.000000 6.000000
X( W1, B3) 0.000000 10.00000
X( W1, B4) 0.000000 9.000000
X( W1, B5) 0.000000 12.00000
X( W2, B1) 0.000000 9.000000
X( W2, B2) 0.000000 12.00000
X( W2, B3) 0.000000 7.000000
X( W2, B4) 0.000000 11.00000
X( W2, B5) 1.000000 9.000000
X( W3, B1) 0.000000 7.000000
X( W3, B2) 0.000000 4.000000
X( W3, B3) 1.000000 3.000000
X( W3, B4) 0.000000 5.000000
X( W3, B5) 0.000000 8.000000
X( W4, B1) 0.000000 9.000000
X( W4, B2) 1.000000 5.000000
X( W4, B3) 0.000000 8.000000
X( W4, B4) 0.000000 11.00000
X( W4, B5) 0.000000 8.000000
X( W5, B1) 0.000000 4.000000
X( W5, B2) 0.000000 6.000000
X( W5, B3) 0.000000 7.000000
X( W5, B4) 1.000000 5.000000
X( W5, B5) 0.000000 11.00000
因为我只想让他输出X(i,j)=1的结果,比如要求上面这道题的结果为:
X( W1, B1) 1.000000 8.000000
X( W2, B5) 1.000000 9.000000
X( W2, B5) 1.000000 9.000000
X( W3, B3) 1.000000 3.000000
X( W4, B2) 1.000000 5.000000
X( W5, B4) 1.000000 5.000000
想问怎么运用@text函数,希望高手能解决这个问题!把上面指派问题的@text写出来!谢谢!谢谢!
可以循环一下只输出非零的……例如这样……
@for(links(i,j):
@ifc(x(i,j)#eq#1:
@write(i,',',j,';',@newline(1));!活着直接输出x(i,j)…………
)
也可以在求完解之后点lingo-->solution里面第一个框框里面就能选你想输出的变量,后面有个选项Nozeros only打勾就行了……
不知道对不对~~~还请路过的检查下~~~ 不过要先建个文档才可以用write函数滴~~~@divert('结果.log'); 试试运气啦~~~~~~~~~~~ 什么东东的----- 不就一程序而已啊---- 哦~~ 楼主那种裂纸欲出的大手笔,竟使我忍不住一次次的翻开楼主的帖子…… 鉴定完毕! 强人,佩服死了。呵呵,不错啊