PackType
Varchar(16)
包装种类
Number
Int
件数
Weight
Int
重量
Volume
Float
体积
InsureMoney
Int
保价金额
LimitedDay
Int
运到期限
Freight
Float
运费
TicketTime
datetime
制票时间
maxb
int
装载效益 3.2 关键程序设计 行包配装的目的是从所有的行包X中挑选出要装车的行包x。基于前面数学模型分析,程序设计将根据行包配装的约束条件,采取逐步剔除不符合装车条件的行包,生成最终装车单,具体的程序设计流程如图3所示。
3.2.1 根据到站选择装车行包
由约束条件公式(3)可知,满足到站装车的条件有两种,一是(Di ÎSi);二是(DiÏS直达 && min D (Di, Ti));第二种情况计算货物装载车次到站最短距离(CalculateMinDis)函数的实现相对复杂一些,但此函数是属于图论中求两点之间最短路径的问题。为了简化此函数的算法,在停靠站表(TKZB)中添加了一个中转站标志(CrossL)字段,有了此项将大大降低程序的复杂度和提高函数的处理速度。部分程序代码如下:
CreatTempTable(#TKZB_T); // 创建停靠站临时表
CreatTempTable(#XBXX_T); // 创建行包信息临时表
AdoQuery1.sql.clear;
AdoQuery1.add(‘insert into #TKZB_T (select * from TKZB where TrainNumber =”当前车次”)’);
AdoQuery1.ExeSql; // 将满足( Di Î Si )条件的到站添加到停靠站临时表中
CalculateMinDis (‘当前车次’); // 将满足(DiÏS直达 && min D (Di, Ti))条件的到站添加到停靠站临时表中 AdoQuery1.sql.close;
AdoQuery1.sql.clear;
AdoQuery1.add (‘insert into #XBXX_T (select XBXX.* from XBXX,#TKZB_T where #TKZB_T.StationName = XBXX.ArriveStation)’);
AdoQuery1.ExeSql; // 将满足到站条件的行包添加到行包信息临时表中
3.2.2 计算备装行包的maxB并排序 从目标函数公式(8)知,在计算maxB时将用到行包类别、货物存放时间、到站里程和保价金额。其中货物存放时间可根据制票时间求得。部分程序代码如下:
AdoQuery1.sql.close;
AdoQuery1.sql.clear;
上一页 [1] [2] [3] [4] [5] [6] 下一页 |