【发布时间】:2022-11-24 06:33:36
【问题描述】:
我正在 Python 中使用 PYSCIPOPT 解决优化问题。我知道我不需要指定问题类型,它会自动为我检测。但我有一个特殊的情况,它可能会有用。
我原来的问题是 MINLP,但 PYSCIPOPT 无法解决它。所以我使用外部代码来建议对整数变量的猜测,然后我修复整数变量,从而使问题有效地成为 NLP。为了编码方便,并且因为我有时可能无法修复所有整数变量,所以我使用相同的 MINLP 公式,但使用 .fixVar() 方法指定整数变量的值。预求解后,它显示 0 个整数变量,因此我假设它将问题视为 NLP。但是因为初始模型包含整数变量,我想知道它是否仍然像MINLP一样试图解决它;例如使用针对 MINLP 而不是 NLP 微调的启发式方法。在这种情况下,明确告诉 SCIP 像 NLP 一样解决它可能会有好处。
我查看了 SCIP 和 PYSCIPOPT 文档,但找不到指定问题类型的参数,就像 GAMS 那样。我也没有在 StackOverflow 上看到任何相关问题。
如果有人知道,
- 如何强制问题类型
- 一种更好的方法来确保它像 NLP 一样求解,而不是仅仅使用
.fixVar()来修复整数变量 - 或者一个标志,知道它正在将其视为什么类型的问题(在预解决之后)
那很好啊。或者,如果这无关紧要,因为,
- SCIP 对两者使用相同的启发式
- 固定整数变量后MINLP求解算法等价于NLP算法
- 或者SCIP看到没有整型变量后自动切换到NLP算法
这也很高兴知道。
【问题讨论】: