docplex解决一维数组和二维数组的共同作用的优化问题

该文展示了如何使用Python的Docplex库来构建线性规划模型。通过一维数组`x`和二维数组`y`作为决策变量,定义了它们之间的相互制约关系和约束条件,并设定优化目标,最后利用Cplex求解器找到最优解。
摘要由CSDN通过智能技术生成

一维数组和二维数组的共同作用情况

使用背景

  1. 使用 continuous_var_list() 定义决策变量 x
  2. 使用 continuous_var_matrix() 定义决策变量 y
  3. x 和 y 之间的相互制约、相互限制的约束条件添加。

使用方法

#导入包
import cplex
import docplex
from docplex.mp.model import Model
from typing import List

# 输入数据
qB=[20,15,13,10,4]
cB=[2,5,7,10,11]
qQ=[2,10,15,10]
cQ=[20,18,15,13]

# 定义优化模型 
mdl = Model()

## 定义决策变量  
### continuous_var_list 定义一维决策变量 
index1: List[int]=[i for i in range(len(qQ))]
x = mdl.continuous_var_list(index1, name='X')

### continuous_var_matrix 定义一维决策变量 
index2=[i for i in range(len(qB))]
y = mdl.continuous_var_matrix(index2, index1, name='Y')

# 定义约束条件 
cst = [] 
cst += [x[j] >= 0 for j in index1] + [x[j] <= qQ[j] for j in index1] + [mdl.sum(x[j] for j in index1) <= sum(qB)] 
cst += [y[i,j] >= 0 for i in index2 for j in index1] + [mdl.sum(y[i,j] for i in index2) == x[j] for j in index1] + [mdl.sum(y[i,j] for j in index1) <= qB[i] for i in index2]
for c in cst: 
    mdl.add_constraint(c) 

# 定义优化函数
obj = mdl.sum(y[i,j]*(pow((cQ[j]-cB[i]),3)) for i in index2 for j in index1)

# 最大化 目标函数 ,并求解 
mdl.maximize(obj)

#求解模型并显示
solution = mdl.solve()
print(solution)

运行结果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值