【问题标题】:Getting unique solutions with python cplex solution pool使用 python cplex 解决方案池获得独特的解决方案
【发布时间】:2020-12-01 05:58:45
【问题描述】:

我有一个 MILP 模型,我尝试使用 cplex python API 来解决它。我需要得到不止一种解决方案。问题是,当我从我的 cplex 池中获得例如 50 个解决方案时,这些解决方案非常相似。如何在获得这些解决方案之前以某种方式洗牌,并在不添加新约束的情况下尽可能多地获得彼此不同的解决方案?

【问题讨论】:

    标签: python python-3.x cplex docplex


    【解决方案1】:

    您可以为此使用解决方案池过滤器。使用多样性过滤器,您可以确保解决方案足够不同。然而,这些过滤器仅适用于二进制变量。

    您可以在solution pool documentationsolution pool reference documentation 中找到更多详细信息。有关过滤器函数的详细信息,请参阅 C 库参考文档 herehere

    用户手册还提供了一个示例,说明如何找到使用另一种策略的各种解决方案。见CPLEX > User's Manual for CPLEX > Discrete optimization Solution pool: generating and keeping multiple solutions > Parameters of the solution pool > Example: diverse solutions through replacement parameter

    【讨论】:

    • 谢谢丹尼尔。对于使用 add_diversity_filter(self, lb, ub, expression, weights=None, name='') 我不知道该为参数添加什么。例如,低频段指的是什么?或者需要表达什么?我在 IBM 的网站上看到了这个例子,但还不够清楚。
    • C API 中相应函数的参考文档应该为您提供所需的详细信息,请参阅ibm.com/support/knowledgecenter/SSSA5P_12.10.0/…。该文档还提供了一个明确的示例来寻找不同的解决方案(使用更简单的策略):ibm.com/support/knowledgecenter/SSSA5P_12.10.0/…
    猜你喜欢
    • 1970-01-01
    • 2019-11-21
    • 2023-04-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-15
    • 1970-01-01
    相关资源
    最近更新 更多