背景
码头管理中进口箱选位一直是一个难题,特别是对于堆场面积小的码头而言,翻箱率居高不下会导致企业资源浪费,作业效率下降。今天,小编带您一起看看上海浦东国际集装箱码头有限公司是如何从箱位堆放上入手,优化进口箱选位算法,实现降低翻箱率(箱操作数/总操作数)的。
堆场管理现状
1.1进口重箱作业特点
上海浦东国际集装箱码头有限公司是上海港最早经营集装箱的码头,公司航线多,船舶小,船期密度大,箱区安排紧张。虽然部分进口箱采用大票集中堆放,总体上可以降低部分翻箱率,但大部分进口箱位置的选择,主要采用大计划方式,随机堆放。用户前来提箱的时候,并没有一定的规律,也属于随机提取。鉴于这些情况,公司原有进口堆场选位算法并没有发挥太大作用。因此,我们考虑到对进口箱的选位进行优化。
1.2进口重箱选位问题
根据进口箱具体情况,我们确定研究的问题:在贝位已知的前提下,贝位内每个箱子的进场时间和天数是已确定,但提箱时间未知。可以描述为:给定一个贝位,当前贝位上有一定数量的已知进场天数的集装箱,要进来一个已知进场时间的新的集装箱,位置上已有集装箱和将要进入的集装箱,提离的时间都不确定。
对此,我们设计一个评分函数,对即将进入研究贝位的箱子以及它周边的箱子进行评分,根据评分情况,利用启发式算法,为每个进场的箱子选择一个最为合适的位置,降低翻箱率。
数据分析
2.1数据采集分析
要分析堆场上集装箱位置变化的信息,先要获取有代表性的数据,然后利用数据分析器进行扩展模拟。我们选取箱量较高的12月份箱动态信息数据,作为分析的初始数据依据。数据信息包含了集装箱的初始计划选择位置、实际落箱位置、非进出(装船或提箱)位置变化动态。问题可以转化为:已知后续所有集装箱进场的序列和具体时间,以及所有集装箱的出场序列和具体时间,现需要安排操作,在假设未知出场序列的前提下,模拟每一个集装箱进场并且进行位置选择,模拟每一个集装箱在场翻箱操作,统计最终的移动数量。
首先对进口卸船提箱时间进行分析,对其规律进行探寻。我们建立一个单独的数据分析器,这个分析器可以完成以下模拟任务,使得其能够对信息进行分析。
(1)模拟到任意一个时刻进行暂停,且能够获得此时的在场箱位置列表、状态列表,以及此时的后续任务。此外,模拟在场箱动态信息数据中的每一个动作,并且在动作执行时,进行数据的统计和记录。该部分模拟的意义在于,可以对所有动作截取任意时长进行统计,即对相关整体数据进行统计和分析。
(2)截取某一个贝位,能够对该贝位内的所有相关操作进行统计和分析,即可以获得一系列仅针对该贝位内操作的分析,且该分析过程独立于整体模拟,并且有极高效率支持多组数据模拟和分析。该部分模拟的意义在于,可以单独研究每个贝位上的具体情况,截取数据并且进行模拟。
2.2评分机制引入
对整体数据的进口箱提箱天数进行分析,进口箱提箱天数和百分比见表1。其中第一行代表该箱在堆场中的天数,第二行表示在堆场中等待该天数的箱的提箱占总数的百分比,第三行表示在该天数下,占剩余的百分比数值。
从统计可以看出,平均堆存天数约为4.5天。9天以上的集装箱分布较为分散,因此我们将提箱时间大于等于9天的箱全部进行合并统计,其总量在4%左右,和第一天较为接近。2-6天为进口重箱主要提箱时间,该部分合计约有79%。箱子在场时间越长,则在后一天被提走的概率都会被增加。而我们看到其主要集中在3-5天的分布,其连续三天加起来接近53.61%,因此我们考虑当堆存天数相差3天以上会出现大概率的翻箱。
此外,我们对箱量达到100自然箱的船舶进行了进口箱提离场地的时间分布统计分析,船舶进口箱提离堆场的时间分布表见表2。
由于进口提箱没有预约机制,客户办理时间随机而无序,实际提箱时间差别较大。由此可以看出,直接按照“船到来的日期”进行选位,是不可行的。因此,我们考虑引入评分机制,进行选位的优化。
2.3进口重箱堆存算法优化设想
为了降低进口箱的提箱翻箱率,我们必须对进口箱进入场地贝位前进行优化位置的优化选择。由于受堆场的限制和船舶效率的要求,且进口箱选位一直采用大计划的方式,如果采用对选位算法做过多过细的选位规则的方法,算法改进的效果并不大。通过前期数据分析,我们发现在轮胎吊堆场中,进口箱选位和翻箱选位当前仍有很大的优化空间。因此,我们考虑不去修改桥边手持机改变原有的选位信息,而是在桥边指定了具体的箱区、贝位之后,在轮胎吊RPS端进行指定贝位选位的优化建议。
具体情况就是,贝位已知,贝位内每个箱子的进场时间确定,但是提箱时间未知,我们设想是否有一种在已知进口卸船的预计提箱时间的前提下,结果较优的堆叠算法。该算法主要思路:假定预计提箱时间不同,那么在选位和翻箱过程中,在同样的空间下,我们优先选择预计剩余堆存天数大于当前箱的位置进行堆叠。
选位算法实现方法
算法根据当前堆存高度、当前堆存天数,来对进口箱在单个贝位的堆叠策略和翻箱策略进行修改并且优化。
3.1算法设计
对于任意一个进口箱的堆叠,我们可以将其分为多种具体情况。针对不同情况设计相关的具体策略。具体策略的生成,我们直接进行条件假设,即以下三个条件:
(1)新进入堆场的集装箱,根据上面的统计概率,在压到进场天数大于此集装箱的箱上时,容易造成翻箱,因此应当尽量避免此情况;
(2)在已有堆存天数较多的集装箱进行翻箱时,如果没有空列,由于该箱被提走的概率较高,那么放在尽可能高的位置,可以为其它箱的后续堆叠节约空间;
(3)如果两个集装箱的在场天数差距在3天以上时,其被提走的概率相差较大,因此可以近似认为堆存较久的集装箱会被先提走。
在根据统计结果形成的以上假设条件下,我们设计相应的评分函数和基础公式,并且在此公式基础上进行数值验证和结果计算。后面关于时间的计算,全部采用最小单位为“天”的单位。
对此,首先定义三个变量。
定义1:接近时间T1(x):针对即将要堆叠的排T进行计算。如果该列存在某个进场时间在该箱之前的箱子,T1(x)为“当前时间-要移动的箱的进场时间”,即“当前移动的箱子在场了几天”,如果不存在则T1(x)取10。
定义2:接近时间T2(x):针对即将要堆叠的排T进行计算。如果该列存在某个进场时间在该箱之前的箱子,T2(x)为“当前时间-要移动的箱的进场时间”,即“当前移动的箱子在场了几天”,如果不存在则T2(x)取3。如果T2(x)>3,那么令T2(x)取3。
定义3:当前高度H:同样针对即将堆叠的排T进行计算,即当前排的高度。
在此基础上,我们使用两个分数计算公式来进行判断,两个公式总计有5个参数,分别是常数C,H的系数D和D1,T(x)的系数K和K1。公式中我们假设这些变量满足线性模型。
当列T存在某个集装箱,其进场时间大于要进入这一列的箱x时,使用公式(1),否则使用公式(2)。使用两个公式是因为,如果该列内没有在场时间在此箱之前的,那么说明该箱大概率不会引起翻箱,就不算作翻箱数;而使用公式(2),意味着该箱很大概率会引起翻箱,则在此情况下参数应该单独进行设定。
对该贝位逐列进行F(x)值计算,选择F(x)最大且和起始列不同的一列作为该箱所翻到的列。
3.2算法实现
以图例说明公式使用情况如下。
堆叠列T内所有箱进场时间均在当前移动箱之后示意图见图1。箱子上的数字代表该箱的进场日期。进场的集装箱日期为1,意味着该列其它集装箱的进场日期都在此箱之后,因此使用公式(1),其T1(x)=10,令C=40,D=-1,K=2,由此可得F(x) =40 - 1* 4+ 2 * 10 = 56。
堆叠列T内部分箱进场时间均在当前移动箱之后见图2。图2中则是该列中有在此箱后,也有在此箱前进场的集装箱,因此仍然使用公式(1),其T1(x)=1,令C=40,D= -1, K=2,则此处F(x)=40-1*4+2*1= 38。
堆叠列T内所有箱进场时间均在当前移动箱进场时间之前示意图见图3。图3中则是满足T2(x)的计算条件,该列的所有进场时间都小于该箱,因此使用公式(2),其T2(x)=1,令D1=1,K1= -2 ,则其F(x) =1*4 + (-2) *2 = 0。
根据公式(1)和(2),按照图例中所给出的情况,设计相关源代码,进行试验分析和验证。
试验验证
4.1 试验数据准备
为了进行批量的测试和结果对比,我们使用分析器进行数据提取和生成,以突出代表的24箱区12贝位作为40尺贝位试验数据,44箱区21贝位作为20尺贝位试验数据。
数据生成的方法如下:对整个贝位上的所有操作进行数据截取,保留所有的进箱、提箱、翻箱操作来进行数据生成。由于实际进箱满足假设,因此我们生成了足够多组数据(1000组)来进行实验和对比。每一组数据中,我们保留该箱的实际进场时间,之后根据统计的提箱天数概率,来为该箱随机添加提箱日期,这样生成出的数据就符合统计的概率分布,可以在多组实验的情况下与原始翻箱操作数结果进行对比。
4.2 评价指标和参数调整
分别针对每种不同数据,进行相应实验结果研究和对比,以及进行参数决定。
首先对公式中的C值进行研究。暂时固定K值和D值为初始设计的(D=1,K = -2,D1 = -1,K1 = 2)的条件下,进行C值的求解。取C=-1 作为参数C的取值。
在固定C值前提下,随着K和D值变化求翻箱率。此处我们K1和D1仍然取-1和2。
参数K和D求解表格见表3。根据表3中的数据结果,我们可以得出,原始参数设置的D=1,K=-2是合理的。在此基础上,我们进行K1和D1的求解。
参数K1和D1求解表格见表4。根据表4可知,对于K1和D1的取值分别在D1=-3,K1=2时达到最优。因此,在进行为期一月的进箱数据模拟时,其翻箱率在取D=1,K=-2,D1=-3,K1=2的时候会获得最优结果。
4.3 实验结果总结
此外,我们对原有数据进行修改,即对进箱假设条件进行更改。例如24箱区12贝位生成的进箱数据,假设的进箱时间是固定的,但是我们在这里假设其分布的更加均匀后观察其实验结果,均匀分布下的翻箱率见表5。
其中“2412”代表24箱区12贝位使用调整后的参数的结果,“2412改”代表24箱区12贝位使用修改生成概率的数据后的结果,“2412实际”代表实际翻箱率,而“全箱区”代表全场翻箱率。“2412改”和“4421改”比起实际结果,均有较小幅度的翻箱数百分比上升。
对实际数据结果分析过程中,发现有一些较大的结果出现,说明该算法的应用范围可能仅适用于确定进箱分布下的情况。从上表看,对于“4421”贝位情况,其翻箱率优化值较低,而对于“2412”其实际优化值较高。因此,对于不同的分布假设,仍需要参数调整。
在此研究基础上的下一步的工作方向,主要分为两个部分:一是进行更多的数据测试和对比。本文中的数据量可以扩展到多个代表贝位,时间跨度可以使用多个月的数据。二是对相关参数设计进行优化。在本文中的相关参数是根据经验直接确定的,因此可能会有其他一些有影响的参数也可以加入到决策公式中,使结果更优。