cplex简单使用

参数定义

import random
n = 10
m = 5
set_I = range(1, n+1)
set_J = range(1, m+1)
c = {(i,j): random.normalvariate(0,1) for i in set_I for j in set_J}
a = {(i,j): random.normalvariate(0,5) for i in set_I for j in set_J}
l = {(i,j): random.randint(0,10) for i in set_I for j in set_J}
u = {(i,j): random.randint(10,20) for i in set_I for j in set_J}
b = {j: random.randint(0,30) for j in set_J}

导入模型

import docplex.mp.model as cpx
opt_model = cpx.Model(name='MIP_Model')

添加决策变量

  • 添加连续变量
x = {(i,j):opt_model.continuous_var(lb=l[i,j],ub=u[i,j],name='x_{}_{}'.format(i,j)) for i in set_I for j in set_J }
  • 添加0,1变量
y = {(i,j):opt_model.binary_var(name='y_{}_{}'.format(i,j)) for i in set_I for j in set_J }
  • 整数变量
z = {
    (i,j):opt_model.integer_var(lb=l[i,j],ub=u[i,j],name='z_{}_{}'.format(i,j)) for i in set_I for j in set_J
}

约束条件

在添加决策变量后,需要设置约束条件。任何约束都有:手边(通常是决策变量的线性组合)、右手边(通常是数值)和意义(小于或等于、等于、大于或等于)

constraints = {
    opt_model.add_constraint(
        ct = opt_model.sum(a[i,j] * x[i,j] for i in set_I ) <= b[j],ctname='constraint_{}'.format(j)
    )
    for j in set_J
}

目标函数

obj =  opt_model.sum(c[i,j] * x[i,j] for i in set_I for j in set_J)
#最小化
opt_model.minimize(obj)
# 最大化
opt_model.maximize(obj)
#opt_model.objective.set_sense(opt_model.objective.sense.maximize)

模型求解

opt_model.solve()

打印结果

# 查看目标函数值
print("目标函数值:",opt_model.solution.get_objective_value())
# 查看最优解
print("最优解:",opt_model.solution.get_values())
ue())
# 查看最优解
for v in opt_model.iter_continuous_vars():
    print(v," = ",v.solution_value)

参考

https://www.ibm.com/docs/zh/icos/12.9.0?topic=api-docplex-examples

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值