You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Python的CPLEX中对决策变量排序的代码写法是否正确?

在Python中使用CPLEX对决策变量排序的代码正确性问题

我在Python环境中使用CPLEX时定义了决策变量数组x,想要将这些决策变量排序后存入S,请问以下代码是否正确?

x = np.empty((Total_T,1), dtype= object)
for i in range(Total_T):
      x[i] = mdl.continuous_var(lb= 0, ub= inf, name='x' + str(i+1))

S = sorted(x)

附上PyCharm截图:
PyCharm截图


这段代码不正确,问题出在两个地方:

  • 你创建的x是二维NumPy数组(形状为(Total_T,1)),直接用sorted(x)会尝试对子数组而非决策变量本身排序,逻辑不符合预期。
  • CPLEX的continuous_var对象默认没有内置比较规则,直接调用sorted会触发类型错误,Python无法判断两个决策变量的大小关系。

正确的实现方式:

  1. 先将二维数组转为一维决策变量列表:x_list = x.flatten().tolist()
  2. 指定排序规则,比如按变量名称排序:
S = sorted(x_list, key=lambda var: var.name)

如果需要按其他维度排序,只需修改key函数即可,比如按变量下界排序:key=lambda var: var.lb

内容的提问来源于stack exchange,提问作者Nicholas Nicholas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.25 08:30:24