赞
踩
线性规划问题,像这样的
可以选择用lindo,lingo,matlab等,python这类问题的简单求解,当然还有其他复杂的线性规划,先不管。简单点,就只对这类问题的求解
用的是cvxpy和numpy
直接给出代码(其实感觉还是有点虚的,不知道会不会有错,自己比较菜)
- def line_progra(
- expr: list,
- cons_matrix: list[list],
- determine: list = None,
- pos=True,
- aim='max',
- solver='GLPK_MI'
- ):
- """
- :param expr:方程的
- :param cons_matrix:约束方程
- :param determine:判断大小,只有的0,1列表
- :param pos:正数,True
- :param aim:目标
- :param solver:求解器
- :return:
- """
- """求解线性规划模型"""
- expr_vec = np.array(expr)
- constraint_matrix = np.array(cons_matrix)
- right_vec = constraint_matrix[:, -1]
- constraint_matrix = constraint_matrix[:, :-1]
- num = len(constraint_matrix)
- x_num=len(expr)
- if determine is None:
- determine=a=np.zeros(num,dtype=int)
- x = cp.Variable(x_num, pos=pos)
- constraint = []
- if aim == 'max':
- target = cp.Maximize(expr_vec @ x)
- if aim=='min':
- target=cp.Minimize(expr_vec@x)
- for i, t in zip(range(num), determine):
- match t:
- case 0:
- constraint.append(constraint_matrix[i] @ x <= right_vec[i])
- case 1:
- constraint.append(constraint_matrix[i] @ x >= right_vec[i])
- case 2:
- constraint.append(constraint_matrix[i] @ x == right_vec[i])
- pass
- solution = cp.Problem(target, constraint)
- solution.solve(solver=solver)
- return x.value, solution.value
可以称为目标向量,就是需要求的方程的系数,怎么叫都行
对于图来说,就是指
expr=[70,50,60]
可以称为约束矩阵
约束方程,如上图的一段
- """
- 2声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/593049推荐阅读
相关标签
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。