首页 文章

我得到了分段错误\改变feastol dafault值

提问于
浏览
0

我有一个SCIP项目来解决具有非线性目标函数的二元问题,但是在某些情况下我得到了一条消息“最好的解决方案不可行”,并且在约束中存在一些违规 . (违规大多非常小)为了解决这个问题,我添加了SCIP_CALL_EXC(SCIPsetRealParam(scip,“numerics / feastol”,1e-5)来改变feastol的默认值 . 但是我得到了分段错误!

根据您的有用建议,违规值现在要低得多 . 我的目标函数是 Min: AX+ LSqrt(BX) . 在之前的版本中,我使用了一个辅助变量,比方说 QQ^2 - L^2 (BX) >=0 ,目标函数表示为 Min: AX+ Q . 在新版本中,我将不等式符号更改为相等,并且与 SCIPsetRealParam(scip, "numerics/feastol",1e-8) 组合,约束中的违规更低 . 我还可以做些什么来减少违规值?而且,当我打印feastol的值时,我看到 numerics/lpfeastol=1e-8 但lpfeastol与feastol不同!那么,为什么lpfeastol会被修改呢?当SCIP解决问题时,我看到lpfeastol的修改值多次打印在屏幕上 . 我提前感谢您的帮助

1 回答

  • 0

    也许尝试将src / scip / cons_soc.c中的UPGSCALE定义更改为更大的值 .

    lpfeastol的输出很不幸,但很正常 . 自动减少feastol也可以调节lpfeastol . 我无法重现“我打印了feastol的 Value ,我看过美国/ lpfeastol = 1e-8但lpfeastol与feastol不同” .

相关问题