学习笔记21.08.16:利用python的cplex库解决混合整数规划MIP问题

# -*- coding: utf-8 -*-
# The MIP problem solved in this example is:
# 问题描述
#   Maximize  x1 + 2 x2 + 3 x3 + x4
#   Subject to
#      - x1 +   x2 + x3 + 10 x4 <= 20
#        x1 - 3 x2 + x3         <= 30
#               x2      - 3.5x4  = 0
#   Bounds
#        0 <= x1 <= 40
#        0 <= x2
#        0 <= x3
#        2 <= x4 <= 3
#   Integers
#       x4

import cplex
from cplex.exceptions import CplexError

my_colnames = ["x1","x2","x3","x4"] #变量名称
my_obj = [1.0,2.0,3.0,1.0]    #目标函数系数
my_ub = [40.0,cplex.infinity,cplex.infinity,3.0]   #变量上界
my_lb = [0.0,0.0,0.0,2.0]  #变量下界
my_ctype = "CCCI" #变量类型,I为整数

my_rhs = [20.0,30.0,0.0] #约束右侧的目标值
my_rownames = ["r1","r2","r3"] #约束名称
my_sense = "LLE" #约束的属性:L表示小于,E表示等于
rows = [[["x1", "x2", "x3", "x4"], [-1.0, 1.0, 1.0, 10.0]],
        [["x1", "x2", "x3"], [1.0, -3.0, 1.0]],
        [["x2", "x4"], [1.0, -3.5]]]# 设置约束的系数

def populatebyrow(prob):
    prob.objective.set_sense(prob.objective.sense.maximize)    #目标函数求最大

    prob.variables.add(obj=my_obj,lb=my_lb,ub=my_ub,types=my_ctype,names=my_colnames)  #变量设置

    prob.linear_constraints.add(lin_expr=rows,senses=my_sense,rhs=my_rhs,names=my_rownames)  #约束条件

my_prob = cplex.Cplex()
handle = populatebyrow(my_prob)
my_prob.solve()

print("最优目标值为 ", my_prob.solution.get_objective_value()) # 获取最优解的值

x = my_prob.solution.get_values()   # 获取取得最优解的变量值
print(f'最优x取值为: {x}')

参考了 (1条消息) python调用cplex解决规划问题(一)_白小麦✔的博客-CSDN博客的内容,进行模仿编写,整体代码更符合学习逻辑

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值