线性规划(1)
第一次接触数学建模,看到了一个小题
内容与线性规划相关:
队友给出的观点如下
我看的一脸疑惑,之前对这个完全没有了解
根据他的模型提交了一个结果,如下
点击查看代码
from scipy import optimize import numpy as np import pulp MyprobLP = pulp.LpProblem("LPProbDemo1",sense=pulp.LpMaximize) a1 = pulp.LpVariable('a1',lowBound=0,cat='Continuous') a2 = pulp.LpVariable('a2',lowBound=0,cat='Continuous') a3 = pulp.LpVariable('a3',lowBound=0,cat='Continuous') a4 = pulp.LpVariable('a4',lowBound=0,cat='Continuous') a5 = pulp.LpVariable('a5',lowBound=0,cat='Continuous') b1 = pulp.LpVariable('b1',lowBound=0,cat='Continuous') b2 = pulp.LpVariable('b2',lowBound=0,cat='Continuous') b3 = pulp.LpVariable('b3',lowBound=0,cat='Continuous') b4 = pulp.LpVariable('b4',lowBound=0,cat='Continuous') b5 = pulp.LpVariable('b5',lowBound=0,cat='Continuous') MyprobLP **+=**3/4*a1+7753/10000*a2+13/40*a3+5361/10000*a4+4787/2500*a5-3/8*b1-783/1750*b2-7/10*b3-1/2*b4-8613/7000*b5#目标函数 ''' 约束条件 ''' MyprobLP **+=**(5*a1+10*a3**<=**6000)#不等式约束 MyprobLP **+=**(7*a2+9*a4+12*a5<=10000) MyprobLP **+=**(6*b1+8*b4<=4000) MyprobLP **+=**(4*b2+11*b5<=7000) MyprobLP **+=**(7*b3<=4000) MyprobLP**+=**(a1+a2**==**b1+b2+b3)#等式约束 MyprobLP**+=**(a3+a4==b4) MyprobLP.solve() print("Status:",pulp.LpStatus[MyprobLP.status]) for v in MyprobLP.variables(): print(v.name,"=",v.varValue) print("F(x)=",pulp.value(MyprobLP.objective))
但是答案不对
只能上网上搜搜大佬的解析(
这是找到的解答。。
但是作为编程人员要求出答案
主要学习c++,辅修python所以上网查询大佬方法(搜索引擎)
这里有几个看不懂的地方:(pulp库中的LpProblem LpVariable)
* MyprobLP = pulp.LpProblem("LPProbDemo1",sense=pulp.LpMaximize)
* a1 = pulp.LpVariable('a1',lowBound=0,cat='Continuous')//感觉像是一个范围
* MyprobLP.solve()//得出结果?
* pulp.LpStatus[MyprobLP.status]
* for v in MyprobLP.variables():
print(v.name,"=",v.varValue)
print("F(x)=",pulp.value(MyprobLP.objective))
查明语句具体内容
1. MyprobLP = pulp.LpProblem("LPProbDemo1",sense=pulp.LpMaximize)
模型的建立 ,用来构造一个LP问题实例 pulp.LpProblem(name,sense)--name_实例的名字;sense_LpMinimize或LpMaximize中的一个,用来指定目标函数是求极大值还是极小值。
2. a1 = pulp.LpVariable('a1',lowBound=0,cat='Continuous')
构造函数,用来构造LP问题中的变量 pulp.LpVariable(name, lowBound=None, upBound=None, cat='Continuous', e=None)//lowBound下界;upBound上界;cat指定变量(Integer(整数问题),Binary(0/1问题))(离散)||Continuous(连续)
3. MyprobLP.solve()//求解 solve() 求解函数
4. print("Status:",pulp.LpStatus[MyprobLP.status])//输出求解状态
5. for v in MyprobLP.variables():
print(v.name,"=",v.varValue) 输出每一个变量的最优解
6. print("F(x)=",pulp.value(MyprobLP.objective)) 输出最优解的目标函数值
总结:
什么是线性规划
线性规划(Linear programming),在线性等式或不等式约束条件下求解线性目标函数的极值问题,常用于解决资源分配、生产调度和混合问题。
线性规划求解
(1)问题定义,确定决策变量、目标函数和约束条件;
(2)模型构建,由问题描述建立数学方程,并转化为标准形式的数学模型;
(3)模型求解,用标准模型的优化算法对模型求解,得到优化结果;
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?