排工问题

这篇博客探讨了排工问题,即n个工件依次通过A、B两个机床加工,目标是最小化总加工时间。通过举例和数学解析,详细阐述了解决该问题的动态规划方法,包括状态定义、最优加工时间和状态转移方程,并证明了选择加工顺序的条件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. 问题描述

nnn个工件,每个工件都要按顺序经过AAABBB两个机床进行加工,工件i在AAABBB两个机床上加工时间分别为aia_iaibib_ibi,确定nnn个工件的加工顺序,使得总加工时间最短。

2. 例子描述

  • 例子1
机床 N1 N2
A 4 2
B 1 3

先加工N1,所需总时间为4+2+3=9,先加工N2,所需总时间为2+4+1=7。

  • 例子2
机床 1 2 3 4 5
A 3 7 4 5 7
B 6 2 7 3 4

加工顺序为13542。

3. 问题解决

状态(X,t):XXX中是还没有经过AAA机床加工的工件,tttBBB机床加工X外的工件还需要的时间,如果取 为下一个放在AAA上加工的工件,则i在AAA上完成加工时达到下一个状态(X-i,zi(t))(X-i,z_i(t))(Xizi(t)),其中
zi(t)={ bi,t≤ait−ai+bi,t>ai=max⁡{ t−ai,0}+bi=max⁡{ t−ai+bi,bi} \begin{aligned} z_{i}(t) &=\left\{\begin{array}{ll}{b_{i},} & {t \leq a_{i}} \\ {t-a_{i}+b_{i},} & {t>a_{i}}\end{array}\right. \\ &=\max \left\{t-a_{i}, 0\right\}+b_{i} \\ &=\max \left\{t-a_{i}+b_{i}, b_{i}\right\} \end{aligned} zi(t)={ bi,tai+bi,tait>ai=max{ tai,0}+bi=max{ tai+bi,bi}
  令f(X,t)f(X,t)f(X,t)为处于状态(X,t)(X,t)(X,t)时剩余的最优排工时间,则f(X,t)f(X,t)f(X,t)ttt的单调上升函数,且
{ f(X,t)=min⁡i∈X{ ai+f(X−i,zi(t))}f(ϕ,t)=t \left\{\begin{array}{l}{f(X, t)=\min _{i \in X}\left\{a_{i}+f\left(X-i, z_{i}(t)\right)\right\}} \\ {f(\phi, t)=t}\end{array}\right. { f(X,t)=miniX{ ai+f(Xi,zi(t))}f(ϕ,t)=t
f(1,2,…,n,0)f({1,2,…,n},0)f(1,2,

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值