整数规划课堂总结
【摘要】 整数规划课堂总结
整数规划课堂总结
概念:
1.可以求解一般线性整数规划的方法有(分支定界法,割平面法)
2.用割平面法求解整数规划时,构造的割平面有可能切去一些不属于最优解的整数解.(是错误的)
应用:
1.
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)
求解结果图:
2.
由于每一步参数都要做微调,这里只写出第一步的代码:
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])))
代码截图:
后续步骤只需要改x1,x2的定义域就行了,比如下一步:
bounds=([0, 4], [0, None]
bounds=([5, None], [0, None]
最后的整体结果:
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)