数模鸿雁 发表于 2010-9-4 17:31

关于@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写出来!谢谢!谢谢!








linmatsas 发表于 2010-9-4 18:35

可以循环一下只输出非零的……例如这样……
@for(links(i,j):
@ifc(x(i,j)#eq#1:
@write(i,',',j,';',@newline(1));!活着直接输出x(i,j)…………
)
也可以在求完解之后点lingo-->solution里面第一个框框里面就能选你想输出的变量,后面有个选项Nozeros only打勾就行了……
不知道对不对~~~还请路过的检查下~~~

linmatsas 发表于 2010-9-4 18:36

不过要先建个文档才可以用write函数滴~~~@divert('结果.log');

tomliang 发表于 2010-9-4 20:00

试试运气啦~~~~~~~~~~~

renhust 发表于 2010-9-4 20:30

什么东东的-----

renhust 发表于 2010-9-4 20:31

不就一程序而已啊----

heavent 发表于 2010-9-5 08:00

哦~~

quhb666 发表于 2010-9-5 12:00

楼主那种裂纸欲出的大手笔,竟使我忍不住一次次的翻开楼主的帖子……   

shumopzj 发表于 2010-9-5 15:00

鉴定完毕!  

1234569 发表于 2010-9-5 20:00

强人,佩服死了。呵呵,不错啊
页: [1] 2 3 4 5 6
查看完整版本: 关于@text函数应用