【线性代数】Python解常见的三种线性规划问题

一、线性规划问题数学模型的一般形式

【线性代数】Python解常见的三种线性规划问题_第1张图片
【线性代数】Python解常见的三种线性规划问题_第2张图片

二、连续性规划问题

【线性代数】Python解常见的三种线性规划问题_第3张图片
【线性代数】Python解常见的三种线性规划问题_第4张图片
【线性代数】Python解常见的三种线性规划问题_第5张图片
【线性代数】Python解常见的三种线性规划问题_第6张图片
【线性代数】Python解常见的三种线性规划问题_第7张图片
使用pulp求解

import pulp
model=pulp.LpProblem('Example 7',pulp.LpMaximize)#求最大值
x1=pulp.LpVariable('x1',lowBound=0,cat='Continuous')#限制约束变量为连续性
x2=pulp.LpVariable('x2',lowBound=0,cat='Continuous')#限制约束变量为连续性
#目标函数
model+=72*x1+64*x2
#约束条件
model+=x1+x2<=50
model+=12*x1+8*x2<=480
model+=3*x1<=100
model.solve()#解决问题
pulp.LpStatus[model.status]
print('x1={}'.format(x1.varValue))#打印最优解
print('x2={}'.format(x2.varValue))
print('可获得最大利润',pulp.value(model.objective),'元')#打印最优值

输出为:
在这里插入图片描述

三、整数规划问题

【线性代数】Python解常见的三种线性规划问题_第8张图片
【线性代数】Python解常见的三种线性规划问题_第9张图片
【线性代数】Python解常见的三种线性规划问题_第10张图片
【线性代数】Python解常见的三种线性规划问题_第11张图片
【线性代数】Python解常见的三种线性规划问题_第12张图片
使用pulp求解

import pulp
model=pulp.LpProblem('Example 8',pulp.LpMaximize)#求最大值
x1=pulp.LpVariable('x1',lowBound=0,cat='Integer')#限制约束变量为整数
x2=pulp.LpVariable('x2',lowBound=0,cat='Integer')#限制约束变量为整数
y=pulp.LpVariable('y',lowBound=0,cat='Integer')#限制约束变量为整数
#目标函数
model+=y
#约束条件
model+=y-0.5*x1<=0
model+=y-1/3*x2<=0
model+=5*x1+4*x2<=960
model+=9*x1+10*x2<=1440
model+=4*x1+6*x2<=60
model.solve()#解决问题
pulp.LpStatus[model.status]
print('x1={}'.format(x1.varValue))#打印最优解
print('x2={}'.format(x2.varValue))
print('最大产量为y=',pulp.value(model.objective))#打印最优值

输出为
在这里插入图片描述
【线性代数】Python解常见的三种线性规划问题_第13张图片

四、0-1规划问题

【线性代数】Python解常见的三种线性规划问题_第14张图片

【线性代数】Python解常见的三种线性规划问题_第15张图片
【线性代数】Python解常见的三种线性规划问题_第16张图片
【线性代数】Python解常见的三种线性规划问题_第17张图片
使用pulp求解

import pulp
model=pulp.LpProblem('Example 9',pulp.LpMaximize)#求最大值
x1=pulp.LpVariable('x1',lowBound=0,cat='Binary')#限制约束变量为0-1型
x2=pulp.LpVariable('x2',lowBound=0,cat='Binary')#限制约束变量为0-1型
x3=pulp.LpVariable('x3',lowBound=0,cat='Binary')#限制约束变量为0-1型
x4=pulp.LpVariable('x4',lowBound=0,cat='Binary')#限制约束变量为0-1型
#目标函数
model+=1000*x1+1500*x2+900*x3+2100*x4
#约束条件
model+=4*x1+6*x2+6*x3+8*x4<=20
model.solve()#解决问题
pulp.LpStatus[model.status]
print('x1={}'.format(x1.varValue))#打印最优解
print('x2={}'.format(x2.varValue))
print('x3={}'.format(x3.varValue))
print('x4={}'.format(x4.varValue))
print('总价值最大为y=',pulp.value(model.objective),'元.')#打印最优值

输出为
【线性代数】Python解常见的三种线性规划问题_第18张图片
【线性代数】Python解常见的三种线性规划问题_第19张图片

你可能感兴趣的:(Pandas,python,线性代数,动态规划)