大家好,在使用 proc LP 这个命令的时候碰到了奇怪的问题,求高手帮忙。
我用proc LP 做一个linear minimization, constraint 包括所有变量都有 upper bound, 数个线性的等式constraint, 还有所有变量的 Low bound=0,。
命令写的是最简单的,就是类似于
proc lp data= trial_t2 PRIMALOUT=optimal MAXIT1=1000000 MAXIT2=100000 ;
id id;
type type;
rhs rhs; run;
这种。
我碰到的问题是,他解出来之后,会得到小于0的变量值,也就是说已经低于我给的lower bound了。但是程序并不会报错说constraint infeasible 之类的,反而是说"terminated sucessfully". 而且,程序是认识我设的lower bound的。比如如果我把lower bound的值改成 0.00001,那绝大部分变量都会取值0.00001, 并且显示出是被lower bound 给binding了,但是仍旧会有两个变量取值负数,而且在status里显示出他没有被binding 住。就好像对这两个变量来说,lower bound 不存在似的。为什么会这样呢?我非常困惑。如果我把这两个负变量删除,重新做optimization的话,又会有另外两个原来正常的变量取成负值。
求高手帮助。我在网上查了好久了,也没发现解决方法。
万分感谢!