数学建模整数规划例题分析

问题:
某厂生产三种产品ⅠⅡⅢ。每种产品要经过A、B两道工序加工。设该厂有两种规格的设备能完成 A工序,以A1 、A2表示;有三种规格的设备能完成B工序,以B1、B2、B3表示。产品Ⅰ可在A、B任何一种设备上加工。产品Ⅱ可以在A设备上加工,但完成B工序时,只能在B1设备上加工;产品Ⅲ只能在A2与B2设备上加工。已知在各种机床设备的单件工时、原材料费、产品销售价格、各种设备有效台时以及满负荷操作时机床设备的费用如下表所示,试安排最优的生产计划,使该广利润最大。
生产相关数据表
在这里插入图片描述
分析:
对于产品Ⅰ来说,设以A1、A2完成A工序的产品分别为x1、x2件,转入B工序时,以B1、B2、B3完成B工序的Ⅰ产品分别为x3、x4、x5件;对产品Ⅱ来说,设以A1、A2完成A工序的产品分别为x6、x7件,转入B工序时,以B1完成B工序的Ⅱ产品为x8件;对产品Ⅲ来说,设以A1完成A工序的产品为x9件,则以B2完成B工序的产品也为x9件。
由上述条件可得:

x1+x2=x3+x4+x5
X6+x7=x8

设参数表
在这里插入图片描述

利润公式: 利润 = 单价 - 原料 - 设备费用
目标函数:
max Z=[(1.25-0.25)(x1+x2)+(2-0.35)(x8)+(2.8-0.5)(x9)]-[(300/6000)(5x1+10x6)+(321/10000)( 7x2+9x7+12x9)+(250/4000)(6x3+8x8)+(783/7000)(4x4+11x9)+(200/4000)(7x5)]

约束条件
5x1+10x6<=6000
7x2+9x7+12x9<=1000
6
x3+8x8<=4000
4
x4+11x9<=7000
7
x5<=4000
x1+x2=x3+x4+x5
X6+x7=x8
Xi>=0,i=1,2,3,4……

Matlab建模仿真:

f=[0.75,0.7753,-0.375,-0.447,-0.35,-0.5,-0.2889,1.15,0.684];
f= -f;
a=[5,0,0,0,0,10,0,0,0;
0,7,0,0,0,0,9,0,12;
0,0,6,0,0,0,0,8,0;
0,0,0,4,0,0,0,0,11;
0,0,0,0,7,0,0,0,0];
b=[6000,10000,4000,7000,4000];b=b’;
aeq=[1,1,-1,-1,-1,0,0,0,0;
0,0,0,0,0,1,1,-1,0];
beq=[0;0];
lb=zeros(9,1);
[x,y]=linprog(f,a,b,aeq,beq,lb,[]);
Optimization terminated.

x,y=-y
x =
1.0e+03 *
1.2000
0.2300
0.0000
0.8586
0.5714
0.0000
0.5000
0.5000
0.3241

y =1.1468e+03

该问题实际上应为整数规划问题
最优解为x1=1200,x2=230,x3=0,x4=859,x5=571,x6=0,x7=500,x8=500,x9=324.
最大利润 z=1146元

  • 9
    点赞
  • 50
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
整数规划是一种数学的方法,用于解决决策问题。在Python中,可以使用优化库来实现整数规划,其中比较常用的是PuLP库和Pyomo库。 PuLP是一个开源的线性规划包,支持整数规划。你可以使用pip安装它: ``` pip install pulp ``` 下面是一个使用PuLP解决整数规划问题的示例代码: ```python from pulp import * # 创问题 prob = LpProblem("Integer Programming Problem", LpMinimize) # 定义决策变量 x = LpVariable("x", lowBound=0, cat='Integer') y = LpVariable("y", lowBound=0, cat='Integer') # 定义目标函数 prob += 5*x + 3*y # 定义约束条件 prob += 2*x + 3*y >= 12 prob += -x + y <= 3 # 求解问题 prob.solve() # 打印结果 print("Status:", LpStatus[prob.status]) print("Optimal Solution:") for v in prob.variables(): print(v.name, "=", v.varValue) print("Optimal Objective Value:", value(prob.objective)) ``` Pyomo是一个开源的和优化框架,也支持整数规划。你可以使用pip安装它: ``` pip install pyomo ``` 下面是一个使用Pyomo解决整数规划问题的示例代码: ```python from pyomo.environ import * # 创型 model = ConcreteModel() # 定义决策变量 model.x = Var(domain=NonNegativeIntegers) model.y = Var(domain=NonNegativeIntegers) # 定义目标函数 model.obj = Objective(expr=5*model.x + 3*model.y, sense=minimize) # 定义约束条件 model.con1 = Constraint(expr=2*model.x + 3*model.y >= 12) model.con2 = Constraint(expr=-model.x + model.y <= 3) # 求解问题 solver = SolverFactory('glpk') result = solver.solve(model) # 打印结果 print("Status:", result.solver.status) print("Optimal Solution:") print("x =", model.x.value) print("y =", model.y.value) print("Optimal Objective Value:", model.obj()) ``` 以上是使用PuLP和Pyomo库在Python中实现整数规划的示例代码。你可以根据具体的问题进行修改和扩展。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值