港口信息化、智能化、自动化产品设计想法---14

6.1 港口软件产品建模和算法需求
一个充满生命力的系统,一定具有两种最基础的要素,一个是前面讲的数据挖掘分析展示可视化,另一个就是具有计算能力,一个懂得计算的系统,或者说,拥有计算能力的系统,才能算是有生命力健壮的系统。
算法,是系统计算的基石,是优秀软件系统设计的灵魂,任何一个优秀的软件系统都离不开算法的支撑。比如淘宝,用户在搜索一件商品的时候,商品展示和用户购买行为推荐配对及搜索结果呈现就是算法分析能力的展现,又比如,当用户浏览网站的时候,根据用户日常购买行为自动向用户推荐一些商品采购建议或者促销优惠,这也是算法简单的应用,用户浏览次数越多说明用户购买的可能性越大。还有更深层次的应用场景是,根据用户浏览产品次数与购买成交数据计算用户的交易习惯、使用优惠券的时间和偏好等等,从而对用户可能需要购买的产品提前进行商品物流位移活动(这里跟其它行业进行数据对接交互),当用户下单采购商品的时候,让用户惊讶地体验当日送达超值服务。其实,这件商品在用户第一次点击的时候还在距离用户几千公里远的工厂刚刚投入生产,这就是数据+计算的威力。
具体到港口软件系统,事实上,每个业务环节都有可能涉及算法的研究领域,业务有优化的空间和有智能化的需求就需要算法的支撑。
比如船舶靠泊作业,需要引航时间和区间设置、靠泊时间确定、泊位选择、作业机械配对、人员资源安排、集疏运系统等多重因素规划(当前深水港码头的泊位都是以停靠万吨巨轮作为设计方向,上万个集装箱怎样通过集疏运系统疏导也使深水港码头面临重大挑战),通过对船舶进出港关联调度算法分析设计,把船舶靠泊和离港作为一个整体联动调度,提高集装箱卸船和装船的准时制(JIT),特别是岸线资源紧迫的大码头,船舶停靠作业对算法设计提出非常高的要求。
又比如卸船计划调度,卸船与堆场整理、作业机械协同、实际卸船集装箱堆位安排、用箱作业安排、修箱作业安排、集装疏导与临时区域安排等都是一脉相承的业务链,如何在多个业务链环节中谋划更高的堆场利用空间和提高作业机械效率效能,这又是关键算法技术需要承载的内容。
……等等。
6.2 算法研究一般思路
先总结个人对算法研究探索的一般方法:
在这里插入图片描述
算法不是孤立存在的,一定是为了解决某一个或某一类问题而设计的。因此,在做算法研究前,必须明确我们需要解决的问题内容和解决问题方向。
以下内容以集装箱甩挂运输为例讲解算法设计分析过程。
集装箱甩挂运输,俗称“一头多架”,是指集卡按照预定的计划,在各装卸作业点甩下并挂上指定的拖架后,继续运行的一种车辆运输组织形式,通过拖头和拖架分离管理,增加集卡的实际装载量和降低装载作业等待时间,提高拖头和拖架使用效率和周转率。
以出口装箱为例:
甩挂一般业务模式为:拖头由各自的业务起点出发(业务起点可能是家、港口等场所),从港口出发的集卡把空箱先拖运到拖架中心,从拖架中心出发的集卡把空箱运输到客户指定地址后分离拖架,此时,集卡有两种选择,一种是如果客户周边附近有拖架需要拖运,在客户装货过程中并行把其它拖架取回至拖架中心;另一种是等待客户装箱完毕后,把拖架取回拖架中心。其它集卡在拖架中心与港口之间再次接力运输,完成客户门到港的运输服务。
第二步 问题分析
问题分析通过问题呈现的内部规律、外部表象、数据等一系列信息,对问题的关键要素分析研究。
以集卡甩挂运输为例,其问题包括如下几方面:
(1) 拖架中心停靠选择(多个拖架中心问题),影响集卡周转率;
(2) 拖架中心与装卸地点连接闭合时间与客户等待装货时间比对,以确定集卡采取哪种策略执行任务,直接影响业务运作效率;
(3) 多任务多集卡多拖架调度;
(4) 紧急任务的处理,影响公司服务质量评估;
(5) ……
第三步 条件假设
任何模型都是在一定约束条件下才能有效,而不是没有任何约束的宽泛的模型。在建立模型前,需要对模型的实现进行条件假设,以满足模型计算。
比如,我们对集卡甩挂优化问题进行研究的过程中,可以对算法实现的前提条件进行如下假设:

  1. 设定调度周期,在调度周期内锁定作业任务数量,不再改变作业任务总量,每个调度周期产生的新作业任务滚动到下一个周期进行调度;
  2. 每辆集卡的运输条件是确定的且为标准集装箱尺寸,每辆集卡的集装箱装载数量恒定;
  3. 每辆集卡只能牵引一个挂车;
  4. 为方便计算每个甩挂点之间的实际行驶时间,假设每辆集卡的行驶速度是一个常量;
    …等等。
    当然,约束条件在实际使用中可进行变更调整,力求对模型的应用符合需要。但一定要控制约束条件的数量和范围,不能把模型的核心内容做出不符合常理的约束,导致模型结果超出实际应用,这样的算法是失败的。
    简单归纳,建模假设的依据一般来源三个方面,一是对问题内在规律的认识;二是针对现象和数据的分析;三是以上两方面结合。
    假设一定要有依据,假设一定可产生可控的结果。
    第四步 模型建立
    在假设的基础上,利用适当的数学工具(函数)来建立各变量、常量之间的数学关系,建立相应的数学结构模型。
    这里列举建模过程中需要特别注重的两个内容(这里是特别注重,不是做到这两个就可以建模,还需要根据具体问题具体挖掘建模需要注意的内容):
    (1) 建模变量定义
    建模变量是从求解问题中筛选出最能表现问题本质的关键字作为建模元素,建立关键字之间的关系和约束。简而言之,建模变量选择就是突出主要矛盾,弱化次要矛盾。
    选取了建模元素后,对建模元素进行符号化定义,通过对这些变量进行赋值计算得出问题求解结果。
    好的习惯是在模型建立的起始位置,对所有变量和符号进行对应解释含义,使阅读者能够集中熟悉变量内容,按照C语言编写习惯,而不是JAVA语言编写习惯,不要在算法描述文档的随处对变量进行定义使用,增加学习成本和阅读障碍。
    我们再以前面的集卡甩挂优化问题举例,研究集卡甩挂问题的时候,可能会涉及到任务总量、集卡总量、每个任务装卸作业时间、两个甩挂运输点之间集卡行驶时间、集卡任务启动时间窗等多个关键元素,可设定变量定义如下:
    S:任务总量;
    D:集卡车辆总数;
    fb:表示任务b所需的装卸作业时间(b表示任意任务);
    wb:表示任务b所需的作业等待时间(b表示任意任务);
    cbc:表示任务b行驶到任务c所需的时间(b、c表示任意任务);
    … 等等。
    (2) 目标函数
    建模最终任务就是针对需要解决的问题和问题解决所实现的目标,建立目标函数,对目标函数进行数值计算后得到问题解。
    目标函数是一个目标值与变量之间的数量运算关系的数学公式。目标值可以是求和值∑、求乘积∏、最大值Max、最小值Min、极大值、极小值、平均值、…等等,或者以上多个函数集合而成的多元函数。
    对于任何问题,在约束条件和变量下,目标函数有且只有一个。
    继续以前面的集卡甩挂优化问题举例。
    假设现在需要对集卡作业任务耗时最少为目标进行问题建模求解:
    根据已知的条件,目标函数可定义为:
    在这里插入图片描述
    函数的意义是:集卡总量D要完成运输任务总量S的情况下,装卸作业时间、作业等待时间、两个任务之间行驶所需的时间三者总和最小。
    有了目标函数,我们就可以对变量进行赋值求解得到最优解了。
    第五步 模型求解
    模型求解是对模型的参数进行赋值后计算得出结果。模型求解是一个复杂的运算过程,在计算机有限资源范围内,如何高效、稳定、可靠获取结果?这就要求我们需要选取恰当的计算工具对模型进行求解,而且,根据问题的复杂程度,可能需要对模型进行分层后选择一种或多种计算工具集成计算结果。
    计算工具选择的原则:
    (1) 高效
    效率是选择计算工具首要考虑的条件。如果效率太低,不能在预期时间范围内输出解。
    (2) 计算流程清晰
    在计算工具使用前,最好对计算工具实现的流程进行图表方式表示说明,为阅读者建立清晰的计算工具实现流程逻辑,知道计算工具实现的每一步需要什么值,会得到什么结果。千万不要使用跳转计算太多的计算工具,很容易把问题变成死结无法得到正确结果。
    第六步:模型验证
    算法结果验证就是使用实际生产的应用数据、流程等信息作为算法的输入,经过算法求解得到结果,把结果与当前的操作模式进行对比,如果算法求解得到结果优于当前模式,那么,这个算法就是成功的,否则就是失败的。
    如果模型得到的结果与实际要求差距较大,需要进一步修正假设以及核心元素,重新分析业务后建模。因此,验证、假设、建模是一个迭代循环的过程。
    以前面的集卡甩挂优化问题举例,算法结果就是得到每辆集卡作业任务执行顺序,并以此顺序调度集卡任务执行,成功的算法实现了比当前的调度模式减少任务执行时间。
    当然,这个模型只考虑了任务执行时间最少,没有考虑其它因素,在实际运作中,还需要考虑的因素很多,比如运输费用、货物价值、客户服务等级、道路限行、集卡司机对运输路线的熟悉程度、客户对运输任务附加劳动价值与集卡运输成本可比价格计算、特殊紧急任务、……等等。
    最后一个建议,建模算法实现方案不是问题的最终输出结果,而是通过方案的应用获取最终结果,没有准确的过程就难以获得符合预期目标的解(好像回到CMMI的要求)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值