整数规划课堂总结

举报
小康不会AI 发表于 2022/10/02 17:33:12 2022/10/02
【摘要】 整数规划课堂总结

整数规划课堂总结

概念:

1.可以求解一般线性整数规划的方法有(分支定界法,割平面法)
2.用割平面法求解整数规划时,构造的割平面有可能切去一些不属于最优解的整数解.(是错误的

应用:

1.image.png


from cplex.exceptions import CplexError
my_obj=[40,90]
my_ctype='II'
my_ub=[cplex.infinity,cplex.infinity]
my_lb=[0,0]
my_colnames=['x1','x2']
my_rhs=[56,70]
my_rownames=['r1','r2']
my_sense='LL'
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)

   rows=[[['x1','x2'],[9,7]],[['x1','x2'],[7,20]]]
   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(x)

求解结果图:
2895520ec6571e3056515559c9dbfed3.png
2.image.png


由于每一步参数都要做微调,这里只写出第一步的代码:

import numpy as np
from scipy.optimize import linprog
c = np.array([40, 90])
a_ub = np.array([[9, 7], [7, 20]])
b_ub = np.array([56, 70])
print(linprog(-c, a_ub, b_ub, None, None, bounds=([0, None], [0, None])))

代码截图:
c6863ce4c129018c41ea25bcf28bcb64.png
后续步骤只需要改x1,x2的定义域就行了,比如下一步:

bounds=([0, 4], [0, None]
bounds=([5, None], [0, None]

最后的整体结果:
IMG_0333.JPG

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。