python - 如何在 CPLEX-PYTHON (不是 docplex)中生成一些可行的解决方案?

标签 python algorithm mathematical-optimization cplex vehicle-routing

我正在研究使用线性数学规划方法的车辆路径问题(VRP)的变体形式的论文。我制定了一个经过充分测试的模型,但该模型在最多 30 个节点的可接受的计算时间内求解,因此我需要实现一些元启发法来为更大的实例找到良好的可行解决方案,所以这就是问题。我知道我可以使用 python-cplex 命令solution_pool(类似的东西)生成一些解决方案,所以我想帮助了解如何生成和访问这些解决方案(目标函数值、决策变量值等)我的模型是cplex 对象模型。我知道这是可能的,如果你能帮助我那就太好了。预先感谢并来自智利的问候。

最佳答案

一旦你有了你的 cpx 对象,你就可以编写

cpx.populate_solution_pool()
numsol = cpx.solution.pool.get_num()
print("The solution pool contains %d solutions." % numsol)
meanobjval = cpx.solution.pool.get_mean_objective_value()

sol_pool = []
for i in range(numsol):
    objval_i = cpx.solution.pool.get_objective_value(i)
    x_i = cpx.solution.pool.get_values(i)
    nb_vars=len(x_i)
    sol = []
    for k in range(nb_vars):
        sol.append(x_i[k])
    sol_pool.append(sol)
print("pools =",sol_pool)

关于python - 如何在 CPLEX-PYTHON (不是 docplex)中生成一些可行的解决方案?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56318456/

相关文章:

wolfram-mathematica - Mathematica 中计算元素数量的最大化函数

java - 如何使用算法对未知短信进行分组?

algorithm - 使到一组 n 个点的欧氏距离之和最小的点

python - 在Python中基本的http文件下载并保存到磁盘?

python - 我如何向后循环遍历字典列表,直到找到特定的键值?

algorithm - Scala 提取列表中相差 1 (Ints) 的邻居

c++ - (num+mod)%mod 语句需要什么?

MATLAB:特定线性程序的快速且内存高效的解决方案

python - 如何让 Travis-CI 在出现提示时输入密码?

python - 在Python中迭代列表的列表