[英]CPLEX Python API how to multiply a decision variable with a dummy in the objective function?
[英]How to read variable values in Python cplex api?
我在 Python Cplex API 中模擬了一個 MIP 問題。 有什么方法可以讀取變量值 - 明智的?
目前我正在將變量值讀入一個列表並從 LP 文件中映射這些值”
for i, j in zip(cpx.variables.get_names(), cpx.solution.get_values()):
cplex_details_inp.append((i, j))
通過這種方法,我可以一次讀取所有變量值,但是由於有 500k 個變量,這種方法會導致內存問題。
如何明智地讀取值變量? 我沒有找到任何具體的文檔或示例。
for i in cpx.variables.get_names():
cplex_details_inp.append([i,cpx.solution.get_values(i)])
此代碼可以提供幫助。
查看參考文檔,我們可以看到有多種選項可以調用此函數:
因此,您可以僅將要讀取變量的變量指定為函數的參數。 要么一一指定變量,要么分塊讀取變量。
你所有的變量都是非零的嗎? 如果您的解向量稀疏,以下方法可以解決內存問題:
cplex_details_inp = [[i, cpx.solution.get_values(i)] for i in cpx.variables.get_names() if cpx.solution.get_values(i) > 0]
與一直append
到列表相比,它甚至可能加快進程。 為了將非常小的變量視為零,您可能需要使用round()
:
cplex_details_inp = [[i, cpx.solution.get_values(i)] for i in cpx.variables.get_names() if round(cpx.solution.get_values(i), precision) > 0]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.