首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在SCIP中指定编程类型

如何在SCIP中指定编程类型
EN

Stack Overflow用户
提问于 2022-11-22 16:36:49
回答 1查看 28关注 0票数 0

我正在用Python中的PYSCIPOPT解决一个优化问题。我知道我不需要指定问题类型,它将自动为我检测。但我有一个特殊的情况,它可能是有用的。

我最初的问题是MINLP,但是PYSCIPOPT很难解决它。因此,我使用外部代码来建议对整数变量的猜测,然后修复整数变量,从而有效地解决了NLP问题。为了编写代码方便,而且由于有时可能不会修复所有整数变量,所以我使用相同的MINLP公式,而是使用.fixVar()方法指定整数变量的值。在预解后,它表示为0个整数变量,所以我假设它将这个问题作为NLP来处理。但是,由于初始模型包含整数变量,我想知道它是否仍试图像MINLP那样求解;例如,使用对MINLP而不是NLP进行微调的启发式方法。在这种情况下,显式地告诉SCIP像NLP一样解决它可能有好处。

我查看了SCIPPYSCIPOPT文档,但是找不到一个参数来指定问题类型,比如GAMS有什么。我也没有在StackOverflow上看到任何相关的问题。

如果有人知道,

  1. 如何强制问题类型
  2. 一个更好的方法来确保它像NLP那样解决,而不仅仅是使用.fixVar()来修复整数变量。
  3. 或者是知道它把它当作什么类型的问题(在预先解决之后)的标志。

那太好了。或者说这不重要因为,

  1. SCIP对这两种方法都使用相同的启发式。
  2. 在确定整数变量后,MINLP求解算法与NLP算法等价。
  3. 或者SCIP在没有看到整数变量后自动切换到NLP算法。

这也是很好的了解。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-11-23 22:33:36

没有必要强制使用问题类型。SCIP将实现在应用所有变量固定之后,当没有整数变量时。

SCIP用于NLP的算法与MINLPs没有太大的不同。如果没有整数变量,它只是跳过许多处理整数变量的技术。但SCIP很少说,既然问题只是NLP,它就会做一些特别的事情。多启动启发式只在NLP情况下才能运行。

要直接回答以下各点:

  1. SCIP不知道“问题类型”
  2. .fixVar()很好
  3. 从日志中,您可以看到是否仍然存在二进制/整数变量,以及问题中保留了哪些类型的约束。
  4. 是的,有些启发式方法同时适用于NLP和MINLP。如果没有整数变量,许多MIP和MINLP启发式算法将不会运行。有些启发式算法(如subnlp )将同时为MINLP和NLP运行。多启动启发式只对NLP运行。
  5. 是。
  6. 是的,算是吧。NLP算法是去除整数变量处理的MINLP算法。
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/74536102

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档