首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在Cplex,Python中优化后获取决策变量名称字符串

在Cplex,Python中优化后获取决策变量名称字符串
EN

Stack Overflow用户
提问于 2018-03-08 17:27:17
回答 2查看 676关注 0票数 1

在Python中使用Cplex运行优化程序后,我希望获得每个决策变量的名称。

我知道Matlab中有一个这样的函数,但是我在Python中找不到它。有没有人知道有这样的函数?

谢谢!

EN

回答 2

Stack Overflow用户

发布于 2018-03-08 18:08:25

让我分享一个小例子:

代码语言:javascript
代码运行次数:0
运行
复制
from docplex.mp.model import Model

mdl = Model(name='buses')
nbbus40 = mdl.integer_var(name='nbBus40')
nbbus30 = mdl.integer_var(name='nbBus30')
mdl.add_constraint(nbbus40*40 + nbbus30*30 >= 300, 'kids')
mdl.minimize(nbbus40*500 + nbbus30*400)

mdl.solve()

print(nbbus40.solution_value);
print(nbbus30.solution_value);

print("display")

for v in mdl.iter_integer_vars():
    print(v," = ",v.solution_value)

这给了我们

代码语言:javascript
代码运行次数:0
运行
复制
6.0
2.0
display
nbBus40  =  6.0
nbBus30  =  2.0
票数 1
EN

Stack Overflow用户

发布于 2018-03-08 23:55:08

通过CPLEX Python API (不要与Alex的回答中显示的DOcplex Modeling for Python API混淆),您可以使用Cplex.variables.get_names方法。下面的玩具示例读取一个模型文件(在命令行上给定)并打印出所有名称:

代码语言:javascript
代码运行次数:0
运行
复制
import sys
import cplex

if len(sys.argv) != 2:
    raise ValueError("usage: {0} <filename>".format(sys.argv[0]))

c = cplex.Cplex(sys.argv[1])

for index, name in enumerate(c.variables.get_names()):
    print("variable[{0}] = {1}".format(index, name))
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49169586

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档