侯定勇,李翠平,赵怡晴,李仲学
(金属矿高效开采与安全教育部重点实验室,北京科技大学资源工程系, 北京 100083)
基于AutoCAD的矿山生产计划优化系统设计与实现
侯定勇,李翠平,赵怡晴,李仲学
(金属矿高效开采与安全教育部重点实验室,北京科技大学资源工程系, 北京 100083)
通过对矿山企业生产流程进行分析,建立一个通用的煤炭企业生产计划优化目标规划模型,利用ObjectARX与lingo的二次开发技术,在AutoCAD环境下设计与实现矿山生产计划优化系统。集成AutoCAD系统与生产计划优化系统,从而更加方便设计人员在统一的环境下进行业务工作。
煤炭企业;生产计划优化;目标规划;AutoCAD;ObjectARX;lingo
煤炭企业生产是一个复杂的工业过程,从采场开采到选厂加工到最终生成产品煤交付给客户是一个连续的供应链流程,由于客观条件的限制,煤炭企业总是在一定约束条件下进行生产, 因此企业必须实现有限资源下对目标追求的最大化,从而实现最优生产,帮助煤炭企业实现集约化发展,提高煤炭企业的竞争能力。
AutoCAD是工业领域中应用最广泛的设计软件之一,在矿业中,矿山的相关设计大多是利用AutoCAD系统进行图纸化表述,AutoCAD简洁的工作界面和高效的绘图能力使之很受欢迎,同时AutoCAD提供了ObjectArx二次开发环境可以方便的使第三方开发者扩充软件功能,整合自己需要的业务模块。
本文研究煤炭企业生产计划优化通用模型的构建,通过建立优化模型,在AutoCAD环境下实现求解,并实现生产流程的可视化,从而为企业决策提供支持。
1.1 优化模型的建立
生产计划优化是露天矿企业管理的重要组成部分,直接关系到企业的生产效率和经济效益。如何更有效的配置各种资源,对露天矿的生产管理至关重要。
优化模型的目的是求解出固定周期内的产量最大化或固定产量下的系统资源最小利用,通过最优化理论和方法,以对资源最佳配置,从而实现煤炭企业的最大化目标。由于在煤炭企业中实现资源的最优配置是一个多目标的决策过程,因此必须要建立煤炭企业生产计划的多目标决策数学模型[1]。煤炭企业的生产流程如图1所示。
图1 煤炭企业的生产流程
可以看见在以销定产模型中,始终以客户订单为最基本的目标。订单分为长期订单和短期订单,企业每月生产仅仅要做的就是汇总该月每个订单对商品煤的需求量。然后确定原煤产量,然后对每个采场分配原煤采出量,在采出原煤送往洗选车间时,再为选厂分配洗选原煤量。最终所有的商品煤按照订单需求运输到客户,多余商品煤库存。在煤炭生产过程中,各个环节存在着多个约束,根据这些约束可以建立起最优化模型[2-3]。
由于煤炭生产计划优化是确定原煤开采量的最优化配置,通过对煤炭企业生产流程进行分析可以建立三个维度的原煤开采量决策变量:订单维,采场维,工艺流程维。以xcio表示采场i为订单c的工艺流程o开采的原煤开采量,工艺流程相当于选厂,因为各个选厂是并行的进行不同的工艺流程,生产不同的煤产品[4-5]。
假设有m个订单、n个采场、p个工艺流程,则可以建立如下各级约束。
(1) 采场约束,每个采场的月采出量要小于采场生产能力。
(1)
(2)洗选能力约束。送往洗选车间的原煤量不能超过车间的洗选能力。
(2)
(3)需求量约束。每个订单对每个煤产品都有自己的确定的需求量,因此必须满足订单对煤产品的需求量。
(3)
(4)运输能力约束,企业实际运输量不能超过其运输能力。
(4)
(5)销售收入约束,企业实际收入要大于预期收入点。
(5)
式中,Fcoj为c订单o工艺流程中产生的j煤产品的单价,P为企业要实现的收入目标值。
(6)储量比均衡约束。
(6)
(7)硫分约束。
(7)
(8)达成函数,通过对以上各级目标进行设置不同的优先级和权系数,则达成函数通式为:
式中,P1,P2,…,P7为各级的优先级,wcojd为商品煤需求量的权系数。
1.2 系统模块设计
优化系统的设计包括:原始参数数据库管理,模型输入控制模块,优化求解模块,以及结果可视化模块,如图2所示。
原始参数数据库管理,主要把采场信息、选厂信息、订单信息持久化到数据库中,方便模型输入控制模块直接从数据库里面加载参数配置,辅助快速生成模型。其数据库表有:采场信息表(采场ID,采场名称,生产能力,原煤硫分,储量百分比);选厂信息表(选厂ID,选厂名称,洗选能力);订单信息表(订单ID,订单描述,订单制定时间);采场-产品煤信息表(自增ID,采场ID,产品煤ID,回收率,回收率常数,回收率系数);产品煤表(产品煤ID,选厂ID,产品煤名称);订单-产品煤信息表(自增ID,订单ID,产品煤ID,需求量,单价,产品煤硫分)。其中采场信息表和采场-产品煤表相关联,通过原始采场管理模块完成信息增删改查,而选厂信息表和产品煤表关联,订单表和订单-产品煤表关联,分别通过原始选厂管理和原始订单管理模块实现信息的管理。
图2 系统模块
输入控制模块主要是完成优化模型中的参数配置和模型的生成,比如,采场的数量,每个采场的生产能力,选厂的洗选能力等等。分别通过采场管理,选厂管理,订单管理和其他管理四个子模块完成对优化模型参数的录入和管理。该模块也可以直接从数据库中加载数据,因为在生产环境下,对于一个确定的煤炭企业来说,除了订单信息,其它的输入参数基本上都是不变的,因此持久化这些数据到数据库中可以简化优化求解的参数输入量。
在所有配置完成之后,则可以计算指定月份的针对各订单原煤开采量的最优解,该模块主要是通过调用第三方软件包lingo实现。
优化结果可视化模块,主要在完成优化计算之后,在生产流程图中以图形可视化最优解,以及用表格的方式展示最优解情况下具体详情,使得最终的结果更加直观。
基于AutoCAD的objectARX和lingo的二次开发技术,使用VC++在AutoCAD环境下开发一个集成生产计划优化求解的应用系统。该系统不会脱离AutoCAD设计环境,可以方便的对生产计划进行优化求解与决策。
2.1软件开发环境
ObjectARX直接以DLL的方式驻留在AutoCAD的进程地址空间,由于exe对dll的调用是运行在操作系统层面,从而使得AutoCAD对ObjectARX的调用在最底层完成,调用本身所带来的资源和时间开销达到了最小化。虽然AutoCAD的二次开发技术还有LISP和VBA,但无论是LISP这种解释性语言本身解释执行的低效性还是VBA这种基于ActiveX Com技术调用切换所带来的资源和时间巨大开销,都使得它们执行效率远远赶不上ObjectARX,另外采用ObjectARX可以完全调用win32 SDK提供的所有功能以及MFC,因此ObjectARX还有功能及其丰富的优点,当然ObjectARX采用C++开发,本身也有一定的语言难度[6-7]。采用ObjectARX技术二次开发的框图如图3所示。
图3 ObjectARX技术运行体系结构
Lingo是一个专业的优化模型求解软件包,lingo本身软件强大,可以求解任意的优化模型,其次lingo具有可编程性,使得构建优化模型的难度大大降低,且提供了二次开发接口,使得第三方软件可以很方便的调用lingo的功能[8]。该系统使用lingo进行求解的结构如图4所示。
图4 lingo求解目标规划模型过程原理
2.2 系统实现
该系统采用VC++2005开发环境,结合ObjectARX SDK 2007和lingo11二次开发sdk包,以AutoCAD2007为宿主机运行平台,以ACCESS 2003为系统数据库。
生产计划优化原始数据库管理,实现了对优化原始信息的数据库管理,真正执行优化模型建立时,可以直接从这些预设的模板数据中直接产生模型,从而方便优化模型的快速建立,由于优化模型中有很多的数据是不易变的(如采场的生产能力,洗选工艺的洗选能力以及回收率等),而易变的主要是订单数据,所以可以将采场,洗选工艺等参数信息持久化到数据库中,建模型时直接调用即可,从而减少用户输入量。
从计划配置面板中直接插入采场和选厂以及订单,从而在cad图纸中建立优化模型,整个流程图制定完成,优化模型建立,其工作流程如图5所示。
图5 优化计划建模
执行优化计算之后,可以用节点结合文本表格的方式完成最优解及其详情的可视化,最顶层节点显示最优解以及各级目标的实现情况,第二级为订单级,第三级为采场级,第四级为洗选工艺级,其界面如图6所示。
本文通过分析煤炭企业实际生产流程,设计建立了一个煤炭企业以产定销模式下以订单,采场,洗选工艺三个维度为基础的多目标优化模型。通过lingo二次开发技术,设计了依靠多次迭代方式使用目标规划法求解多目标规划模型的方法,实现了对优化模型参数持久化到数据库的功能,使得用户直接从生产计划面板直接拖出不易变的参数配置,绘出生产流程图,并实现优化结果的可视化。
图6 优化结果可视化界面
企业生产本身是一个复杂巨系统,系统内部存在着空间上的并存和时间上的继起,全方位把握企业的内部生产流程,以原煤到产品煤的流向为线路建立起来的生产流程分析可以很好的反映企业生产规律,并以此建立客观的优化模型,该系统很好的完成了模型的建立和生产的应用。同时,建立依靠模型的灵敏度分析将会更加的方便企业决策,指导矿山企业在动态的生产环境中制定策略。
[1] 朱 明,李春民.大型煤炭企业生产计划优化[J].中国矿业,2002,11(2):55-56.
[2] 周耀东,赵怡晴,李仲学,等.基于仿真的矿山生产计划优化研究与工程应用[J].矿业研究与开发,2011,31(6):79-82.
[3] 刘宪权.安太堡露天矿商品煤生产计划优化技术[J].露天采矿技术,2010(1):4-7.
[4] 陈国华.煤炭企业生产计划的优化方法[J].煤炭工程,2005(12):93-95.
[5] 张 磊,刘宪权,李翠平,等.基于AutoCAD平台的GIS技术及其实现[J].矿业研究与开发,2010,30(6):56-59.
[6] 何 亮.基于ObjectARX的CAD系统开发若干关键技术的研究[D].合肥:合肥工业大学,2008.
[7] 刘良华,袁英战.在ObjectARX程序中动态添加和删除AutoCAD菜单命令[J].电脑编程技巧与维护,2001(6):83-86.
[8] 罗罡辉,叶艳妹.多目标规划的lindo求解方法[J].计算机应用与软件,2004,21(2):108-110.
2013-09-06)
国家自然科学基金资助项目(51174032); 教育部新世纪优秀人才支持计划资助项目(NCET-10-0225);中央高校基本科研业务费专项资金资助项目(FRF-TP-09-001A).