可能这是见仁见智,你给出的程序中这一段可能结构化不是很强:在a属于{0,1,2,3,4} b属于{2,4,6,7}的时候, ...
确是见仁见智。
我这么写的原因是让约束的形式尽量一点,这样,如果LINGO求解效果不是很好,我可以用其它工具替代。所以,我在最初写模型时就会尽量考虑写成适用于更多求解器能够求解的形式,而不是只是LINGO。
数学上,你的式子是等价的,而我觉得本题写成prod这种约束,并不利于优化算法的求解,实际建模时我觉得应把容差考虑在内。我不知道LINGO的parser有没有那么智能,在求解时能把prod转化为更简的形式。
就本题, 因为a的取值的特殊性,所以用的bnd,实际上和b一样可以类似处理,这个是semiint变量类型的一般化,LINGO本身不直接给出semiint函数,其内部也是转化成的这种形式。
liwenhui 发表于 2015-7-24 11:24 static/image/common/back.gif
可能这是见仁见智,你给出的程序中这一段可能结构化不是很强:在a属于{0,1,2,3,4} b属于{2,4,6,7}的时候, ...
另外,你可以试一下两段不同的表述的细微的运行时间与结果的差别,在我的LINGO 15上,我这段程序用local求解器返回的结果即也是global,你的表述在我这里不是。
也可以看看迭代步数的区别,当然,我这个表述的代价是引入了更多的变量:-)
页:
1
[2]