说明
1、Scipy库提供简单的线性或非线性规划问题。
但不能解决0-1背包规划问题,或整数规划问题,混合整数规划问题。
2、Pulp可以解决线性规划、整数规划、0-1规划和混合整数规划的问题。
为不同类型的问题提供各种解决方案。
3、Cvxpy是一个凸优化工具包。
可解决线性规划、整数规划、0-1规划、混合整数规划、二次规划和几何规划等问题。
实例
以整数线性规划为例
#-*-coding:utf-8-*- importpulpaspulp defsolve_ilp(objective,constraints): printobjective printconstraints prob=pulp.LpProblem('LP1',pulp.LpMaximize) prob+=objective forconsinconstraints: prob+=cons printprob status=prob.solve() ifstatus!=1: #print'status' #printstatus returnNone else: #return[v.varValue.realforvinprob.variables()] return[v.varValue.realforvinprob.variables()] #解决以下整数线性规划 #maximizez=c*x=3*x1+4*x2+5*x3 #subjectto: #x123>=0 #x1+2*x2<20 #x2+3*x3<=40 V_NUM=3 #变量,直接设定下限 variables=[pulp.LpVariable('X%d'%i,lowBound=0,cat=pulp.LpInteger)foriinrange(0,V_NUM)] #目标函数 c=[3,4,5] objective=sum([c[i]*variables[i]foriinrange(0,V_NUM)]) #约束条件 constraints=[] a1=[1,2,0] constraints.append(sum([a1[i]*variables[i]foriinrange(0,V_NUM)])<=100) a2=[0,1,3] constraints.append(sum([a2[i]*variables[i]foriinrange(0,V_NUM)])<=40) printconstraints res=solve_ilp(objective,constraints) printres
以上是python寻求线性规划的包,希望对大家有所帮助。更多Python学习指导:python基础教程
本文教程操作环境:windows7系统Python 3.9.1,DELL G3电脑。