2014-09-22 22 views
1

我在INITSOLVE阶段期间在原始问题空间中阅读解决方案。一些多聚合变量被忽略。我猜这是可以的,因为一旦其他变量的值被修正,它们的值就可以被推断出来。然而,阅读解决方案的客观价值现在已经关闭了,因为这些多聚合变量的目标不包括在内。是否有反正呢?解决方案读取期间在原始空间中的解决方案的目标

回答

1

多聚合变量的客观系数被添加到活动表示的变量中,因此解决方案的客观值通常应该仍然是正确的。

但是,可能发生的情况是多重聚合是通过双重参数完成的,也就是说,可能存在将多重聚合变量设置为不同值的解决方案,但您仍然可以将其设置为给定的值通过多聚合而不会恶化目标。此外,解决方案也可能会根据这种类型的参数更改边界或修改变量。

在这种情况下,您的解决方案可能不适合预先解决的问题,但会“调整”为解决方案的价值不比原始解决方案差。是这样吗?解决方案的客观价值是否更好?另外,为了在原始空间中获得客观值,应该使用SCIPgetSolOrigObj()检查解决方案的目标函数值,因为客户偏移量和因子可以在预解决期间进行更改。 此外,请检查原始问题中变量的值,以了解解决方案与读取的内容有何不同。

+0

谢谢杰拉尔德。我检查了原始问题中变量的值,它们与读取的值相同。但是,当我调用SCIPgetSolOrigObj()时,它仍然关闭。我还在阶段PRESOLVED,SOLVING,SOLVED打印了scip-> origprob-> objoffset,它们都是零。最终的解决方案是正确的,但... – user4043122 2014-09-23 17:40:22

+0

解决方案有多远?您期望的目标价值和SCIP输出的目标价值是什么? – Gerald 2014-09-24 18:15:40

+0

与之前一样,如果我从阅读解决方案中获得目标,则会忽略来自多聚集变量的目标。让我添加更多细节,解决方案保留为独立解决方案,不会添加到原始项目中。我不明白为什么objoffset为零,最终找到的解决方案有正确的目标。 – user4043122 2014-09-25 19:09:11