我正在用Python中的PYSCIPOPT解决一个优化问题。我知道我不需要指定问题类型,它将自动为我检测。但我有一个特殊的情况,它可能是有用的。
我最初的问题是MINLP,但是PYSCIPOPT很难解决它。因此,我使用外部代码来建议对整数变量的猜测,然后修复整数变量,从而有效地解决了NLP问题。为了编写代码方便,而且由于有时可能不会修复所有整数变量,所以我使用相同的MINLP公式,而是使用.fixVar()方法指定整数变量的值。在预解后,它表示为0个整数变量,所以我假设它将这个问题作为NLP来处理。但是,由于初始模型包含整数变量,我想知道它是否仍试图像MINLP那样求解;例如,使用对MINLP而不是NLP进行微调的启发式方法。在这种情况下,显式地告诉SCIP像NLP一样解决它可能有好处。
我查看了SCIP和PYSCIPOPT文档,但是找不到一个参数来指定问题类型,比如GAMS有什么。我也没有在StackOverflow上看到任何相关的问题。
如果有人知道,
.fixVar()来修复整数变量。那太好了。或者说这不重要因为,
这也是很好的了解。
发布于 2022-11-23 22:33:36
没有必要强制使用问题类型。SCIP将实现在应用所有变量固定之后,当没有整数变量时。
SCIP用于NLP的算法与MINLPs没有太大的不同。如果没有整数变量,它只是跳过许多处理整数变量的技术。但SCIP很少说,既然问题只是NLP,它就会做一些特别的事情。多启动启发式只在NLP情况下才能运行。
要直接回答以下各点:
https://stackoverflow.com/questions/74536102
复制相似问题