优化建模实例(四):运输排程问题之二
本文继续介绍运输排程问题的输入数据处理和数据验证。
输入数据
该优化模型中需要使用的输入数据集如表24.10所示。
下列代码创建了以上数据集:
在船运排程中,为了使得合并运输线路与非合并运输线路相互关联起来,在设计数据模型时,数据集work.ship_direct_route中增加了变量shared_route。如果在去往某地区仓库的线路中不存在合并运输线路,则shared_route的取值为“DIRECT”,如地区仓库WH1这一行中,shared_route的取值为“DIRECT”;如果存在合并运输线路,则shared_route的取值为合并运输线路的名称,如地区仓库WH5这一行中,shared_route的取值为“WH4WH5”;如果仅存在合并运输线路,则在数据集中work.ship_direct_route添加一行虚拟的非合并运输线路,以便仅对变量warehouse和shared_route赋值,例如地区仓库WH4这一行,运能数据全部缺失,表示去往地区仓库WH4的线路中,并不存在非合并运输线路,但是shared_route的取值为“WH4WH5”,表示去往WH4的线路中,存在一条合并运输线路。
在work.stock_at_port中保存的是周初在码头和火车站待运的汽车数量。这部分汽车数量属于上周调度计划中的部分,由于允许有0到2天的待运时间,故它们仍然在码头和火车站待运。需要注意的是,这部分数量会占用本周船舶和火车的运能。
数据验证
输入数据是优化模型的基础,为了避免在模型运行过程中出现不可预测的错误,所有的输入数据都必须先经过验证,然后再输入到模型中。验证的内容包括数据的合理性、数据集之间的相互关联性、数据的完整性等内容。
前面的实例中使用了多个输入数据集,并且数据集之间是相互关联的,因此本例中运用了DATA步、HASH对象和SQL过程对多个数据集进行了验证。
在实际项目中,数据集是通过ETL程序从生产环境或其他数据库中抽取并加工生成的,这样一来,数据的合理性、关联性和完整性往往不能得到保证。因此,在实际项目中数据验证这一步骤更加重要。
首先,为了避免改变原数据集,将所有的数据都复制到临时库的新数据集中。代码如下:
接下来在宏DataValidation中对数据集进行验证,将错误的数据从原数据集中删除,并输出到对应的数据集work.error_XXX中(同时输出错误原因)。代码如下:
以上程序将数据集work.data_allocation中变量allocation或者bklg的取值小于0的观测从work.data_allocation中删除,并将其保存到work.exp_allocation中。
以上程序将数据集work.data_production中与work.data_allocation中的package和color不匹配的观测或者quantity取值不合理的观测从数据集work.data_production中删除,并将删除的观测保存到数据集work.exp_production中。
以上程序将数据集work.data_stock中与work.data_allocation中的package和color不匹配的观测或者stock取值不合理的观测从数据集work.data_stock中删除,并将删除的观测保存到数据集work.exp_stock中。
以上程序根据work.data_production中的生产数据和work.data_stock中的初始库存数据,生成了新的数据集work.data_production_stock。新数据集中观测关于变量package和color是唯一的,每天的产量和初始库存将保存在不同的列中。
接下来的代码会对船舶、火车的运输线路进行验证,原理和方法同上面对生产及库存数据的验证,这里以work.data_allocation中的wareshouse为基准,将在本次优化中不需要的线路从运能和排程数据集中删除,并保存到对应的以exp_开头的数据集中。
下面代码会对码头和火车站的期初库存数据进行验证。
在将上面所有的数据集都验证完毕之后,将会生成一个关于所删除观测的汇总信息数据集,其中每条观测为每个数据集中删除的观测条数。通过汇总数据集提供的信息,用户可以通过查看对应的以exp_开头的数据集,从而具体分析产生数据错误的原因。
原数据集中所有被删除的观测条数汇总如图24.7所示。
图24.7 数据集work.exp_status内容
图24.7表明24.2.3节中的代码创建的数据集是合理的。
在宏DataValidation的最后,通过DATASETS过程删除了验证过程中创建的、数据集名称以temp_或val_开头的中间数据集。
本文结束,下一篇文章介绍运输排程问题的代码和功能与技巧汇总。
回复【数据和代码】可以下载《深入解析SAS》一书的数据和代码。
查询往期文章,请回复下列关键字:
【安全】==>【SAS智能平台安全管理】系列文章
【Base基础】==>【Base SAS基础】系列文章
【编程概念】==>【SAS编程基本概念】系列文章
【描述性统计】==>【SAS统计分析系列:描述性统计分析】系列文章
【读外部数据】==>【读取外部数据到SAS数据集】系列文章
【假设检验】==>【参数估计与假设检验】系列文章
【单数据集处理】==>【单数据集处理】系列文章
【方差分析】==>【方差分析】系列文章
【主成分与因子分析】==>【主成分分析与因子分析】系列文章
【多数据集处理】==>【多数据集处理】系列文章
【判别分析】==>【判别分析】系列文章
【聚类分析】==>【聚类分析】系列文章
【线性回归】==>【线性回归】系列文章
【数据汇总展现】==>【数据汇总与展现】系列文章
【SQL语言】==>【SQL语言】系列文章
【LOGISTIC回归分析】==>【LOGISTIC回归分】系列文章
【宏语言】==>【SAS宏语言】系列文章
【多语言支持】==>【开发多语言支持的SAS程序】系列文章
【时间序列】==>【时间序列分析】系列文章
【线性规划】==>【线性规划】系列文章
小贴士
读者可以从以下链接获取SAS公司提供的免费版环境:
SAS大学版(SAS? University Edition)是SAS为在校大学生免费提供的基于虚拟机和网页的SAS环境。回复关键字【大学版】,可以查看详细介绍。
下载路径:
http://www.sas.com/en_us/software/university-edition/download-software.html
SAS学术版(SAS? OnDemand for Academics)是 SAS 为学术届人士免费提供的、在线的、基于SAS 私有云上的应用服务环境。
用户首先需要注册,然后按照提示信息就可登录。
注册路径:
http://odamid.oda.sas.com
本文转自《深入解析SAS — 数据处理、分析优化与商业应用 》
作者:夏坤庄、徐唯、潘红莲、林建伟
如若转载本文,请在文章顶部标注 “本文转自SAS知识 (ID: SASAdvisor),摘自《深入解析SAS — 数据处理、分析优化与商业应用 》”
作者介绍
夏坤庄
《深入解析SAS — 数据处理、分析优化与商业应用》第一作者, SAS软件研究开发(北京)有限公司客户职能部总监。在承担研发工作的同时,夏及其团队负责对SAS非英语市场提供技术支持,并且与在美国及其它地区的团队一起,服务于SAS的SaaS/RaaS业务,同时提供和验证关于SAS产品和技术在应用领域的最佳实践。在加入SAS软件研究开发(北京)有限公司之前,夏就职于SAS中国公司,历任资深咨询顾问、项目经理、首席顾问、咨询经理,拥有丰富的咨询和项目实施经验。在长期的从业经历中,不但为SAS的金融行业客户成功实施了众多深受好评的项目,而且在近年领导实施了非金融行业的多个大数据分析项目。
SAS知识 微信:SASAdvisor 长按二维码关注
欢迎大家投稿,一起分享SAS的点滴
投稿邮箱: sasadvisor@outlook.com
- 深圳西站优化配套设施 确保春运交通顺畅
- ElasticSearch 单机部署多实例环境
- 容错纠错优化发展软环境
- 我市人才引进系统将优化升级
- 襄阳公安24条措施优化发展环境
- 【干货】 960套户型优化设计方案精选
- 中国互联网产品“无障碍”水平低 残障用户需求或成优化机遇
- 施工技术 |18个悬挑脚手架优化做法,脚手架搭设出来后令人耳目一
- 房产开发改造实例:诺丁汉6个卧室学生住房
- 《秦时明月》为去世粉丝建模,网友赞国漫最暖收官!