【问题标题】:Objective of solution in original space during solution reading解题阅读时原空间解题目标
【发布时间】:2014-09-22 00:10:43
【问题描述】:

我在 INITSOLVE 阶段阅读了原始问题空间中的解决方案。一些多聚合变量被忽略。我想这没关系,因为一旦其他变量的值固定,就可以推断出它们的值。但是,读取解决方案的目标值现在已关闭..因为不包括来自这些多聚合变量的目标.. 有没有围绕这个?

【问题讨论】:

    标签: c scip


    【解决方案1】:

    多聚合变量的目标系数被添加到主动表示的变量中,因此解的目标值通常应该仍然是正确的。

    但是,多重聚合可能是由对偶参数完成的,即,可能存在将多重聚合变量设置为不同值的解决方案,但您仍然可以将其设置为由在不破坏目标的情况下进行多重聚合。此外,预求解也可能会根据此类参数更改界限或修复变量。

    在这种情况下,您的解决方案可能不“适合”预先解决的问题,但会“调整”到价值不低于原始解决方案的解决方案。是这样吗?解决方案的客观价值是否更好?

    此外,您应该使用 SCIPgetSolOrigObj() 检查解的目标函数值,以获得原始空间中的目标值,因为在预求解期间可以更改目标偏移量和因子。 另外,请检查原始问题中变量的值,以了解解决方案与您阅读的解决方案有何不同。

    【讨论】:

    • 谢谢,杰拉德。我检查了原始问题中变量的值,它们与读取的相同。但是,当我调用 SCIPgetSolOrigObj() 时,它仍然关闭。我还在 PRESOLVED、SOLVING、SOLVED 阶段打印了 scip->origprob->objoffset,它们都为零。最终的解决方案是正确的......
    • 解决方案还有多远?您期望的客观价值和 SCIP 输出的客观价值是什么?
    • 和以前一样,如果我从读取解决方案中获得目标,则省略来自多聚合变量的目标。让我添加更多细节,解决方案作为独立解决方案保留,它没有添加到原始解决方案中。我不明白为什么 objoffset 为零,最终找到的解决方案具有正确的目标..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 1970-01-01
    • 1970-01-01
    • 2012-06-28
    • 2016-09-24
    相关资源
    最近更新 更多