簡體   English   中英

如何在CPLEX-PYTHON(非docplex)中生成一些可行的解決方案?

[英]How to generate some feasible solutions in CPLEX-PYTHON (Not docplex)?

我正在使用線性數學編程方法研究有關車輛路徑問題(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)

解決方案池中的解決方案位於Cplex.solution.pool屬性中,請參閱此處的參考文檔。

CPLEX默認將在解決方案池中找到的所有可行解決方案保存下來,因此您無需執行任何特定操作即可創建這些解決方案。 但是,由於您不是在證明最優性之后,而是想快速看到好的解決方案,因此您可能需要使用一些參數:

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM