动态规则装配线调度

参照:
http://blog.csdn.net/tanyujing/article/details/8555618

http://www.cnblogs.com/Anker/archive/2013/03/09/2951785.html

__author__ = 'Administrator'
#encoding=utf-8
def fastest_way(pointCost,leaveCost,firstEntryCost,finalLeaveCost,Cost,lineNo,lineSize):
    """
    pointCost 记录在某个装配站的花费
    leaveCost:离开某条装配线进行另一条装配线的花费 序列表示进入另一条装配线
    firstEntryCost:第一次进行装配线的花费
    finalLeaveCost:最后离开装配线的花费
    Cost:记录在当前装配站能获取到的最小花费
    lineNo:记录在当前装配站获取最小花费所要选择的上个装配线
    lineSize:某条装配线有多少个装配站
    """
    Cost[0][0]=firstEntryCost[0]+pointCost[0][0]
    lineNo[0][0]=1
    Cost[1][0]=firstEntryCost[1]+pointCost[1][0]
    lineNo[1][0]=2
    for  index  in xrange(1,lineSize):
        Cost[0][index]=Cost[0][index-1]+pointCost[0][index]
        lineNo[0][index]=1
        Cost[1][index]=Cost[1][index-1]+pointCost[1][index]
        lineNo[1][index]=2

        if Cost[0][index]>Cost[1][index-1]+pointCost[0][index]+leaveCost[1][index-1]:
            Cost[0][index]=Cost[1][index-1]+pointCost[0][index]+leaveCost[1][index-1]
            lineNo[0][index]=2
        if Cost[1][index]>Cost[0][index-1]+pointCost[1][index]+leaveCost[0][index-1]:
            Cost[1][index]=Cost[0][index-1]+pointCost[1][index]+leaveCost[0][index-1]
            lineNo[1][index]=1
    minTime,lastLineNo=Cost[0][lineSize-1]+finalLeaveCost[0],1
    #print minTime,Cost[1][lineSize-1]+finalLeaveCost[1]
    if minTime>Cost[1][lineSize-1]+finalLeaveCost[1]:

        minTime=Cost[1][lineSize-1]+finalLeaveCost[1]
        lastLineNo=2
    return minTime,lastLineNo
def printline(lineNo,Cost,index,lastLine):
    """
    index,某装配站号
    """
    print "站:{2},装配线:{0},花费:{1}".format(lastLine,Cost[lastLine-1][index],index)
    if index!=0:
        lastLine=lineNo[lastLine-1][index]
        index-=1
        printline(lineNo,Cost,index,lastLine)
    else:
        return;
if __name__=="__main__":
    pointCost=[[7,9,3,4,8,4],[8,5,6,4,5,7]]
    leaveCost=[[2,3,1,3,4],[2,1,2,2,1]]
    firstEntryCost=[2,4]
    finalLeaveCost=[3,2]
    linesize=6
    Cost=[ [ [] for digit in xrange(linesize) ]  for out in xrange(2)]
    lineNo=[ [ [] for digit in xrange(linesize) ]  for out in xrange(2)]
    #lineNo[0][1]=1
    minTime,LastLineNo=fastest_way(pointCost,leaveCost,firstEntryCost,finalLeaveCost,Cost,lineNo,linesize)
    print minTime,LastLineNo
    print  Cost[0],Cost[1]
    printline(lineNo,Cost,linesize-1,LastLineNo)
中间错了好几次,总是结果跟别人的对不上。。
。。。。。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值