【发布时间】:2020-12-01 05:58:45
【问题描述】:
我有一个 MILP 模型,我尝试使用 cplex python API 来解决它。我需要得到不止一种解决方案。问题是,当我从我的 cplex 池中获得例如 50 个解决方案时,这些解决方案非常相似。如何在获得这些解决方案之前以某种方式洗牌,并在不添加新约束的情况下尽可能多地获得彼此不同的解决方案?
【问题讨论】:
标签: python python-3.x cplex docplex
我有一个 MILP 模型,我尝试使用 cplex python API 来解决它。我需要得到不止一种解决方案。问题是,当我从我的 cplex 池中获得例如 50 个解决方案时,这些解决方案非常相似。如何在获得这些解决方案之前以某种方式洗牌,并在不添加新约束的情况下尽可能多地获得彼此不同的解决方案?
【问题讨论】:
标签: python python-3.x cplex docplex
您可以为此使用解决方案池过滤器。使用多样性过滤器,您可以确保解决方案足够不同。然而,这些过滤器仅适用于二进制变量。
您可以在solution pool documentation 和solution pool reference documentation 中找到更多详细信息。有关过滤器函数的详细信息,请参阅 C 库参考文档 here 和 here。
用户手册还提供了一个示例,说明如何找到使用另一种策略的各种解决方案。见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
【讨论】: