基于多agent的制造执行系统的功能模块设计

更新时间:2023-04-08 07:38:01 阅读量: 实用文档 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

基于多a g e n t的制造执行系统的功能模块设计

LG GROUP system office room 【LGA16H-LGYY-LGUA8Q8-LGA162】

基于多Agent的制造执行系统的功能模块设计

摘要

离散型制造企业其生产产品种类多、结构复杂、数据信息量大,生产过程包含众多变化和不确定因素,这些使得企业的过程控制复杂、多变。基于多Agent的制造执行管理系统MES(Manufacturing Execution System)能够提高计划过程的实时性和有效性,增强生产管理过程的响应能力,同时改善资源管理的运行效率,是与之相适应的现代生产管理方式。

本课题以某软包装设备总厂有限公司机加工车间为应用背景,使用某一机型印刷机生产的历史数据,采用Java语言编程,以AgentBuilder为平台,在已建立的系统数据库基础上,通过基于单件小批量生产模式的简单车间调度算法,进行MES车间调度功能模块的设计仿真实现,得出相应结果并对其进行分析。

在通过了解Agent的结构、通信语言的基础上,研究了Agent的封装及各个Agent 之间的通信。通过Agent的封装和通信来实现MES的调度功能模块,从而形成一个基于多Agent的制造执行系统的功能模块。

关键词:MES;多Agent系统;调度算法;仿真;Agent封装

Design of the Function Module of Multi-agent Based Manufacturing Execution

System

Abstract

The process control in discrete manufacturing enterprises is complicated and variable. Because products of the enterprises are great variety, complex structure and enormous information, besides its production process contains many changes and uncertain factors. Multi-agent based Manufacturing Execution System (MES) can improve the real-time and effectiveness of planning process and enhance the response ability of the Production Management Process, at the same time, it can improve the operation

efficiency of resource management. In short, it’s a modernized production management method that fits to discrete manufacturing enterprises.

This topic chooses a machining workshop of flexible packaging equipment Co., Ltd as its application background, an AgentBuilder as its platform. To achieve the simulation of planning, we use the historical data of a printing

machine’s production and Java programming language. Based on already established the system database, the simulation design of MES shop

scheduling function modules can be carried out by using the shop scheduling algorithm which is based on the pattern of single and small batch production. Then we obtain the simulation results which are use to analyze the accuracy

of the function modules.

Thorough understanding the structure and communication language of Agents, we do a research in how to encapsulate Agents and communicate between

different Agents. Then the multi-agent based MES shop scheduling function modules are built through the research.

Keywords: MES; Multi-Agent System; shop scheduling algorithm; simulation; encapsulate Agents

目录

1、绪论.............................................................

本研究课题的背景和意义..........................................

本研究课题相关领域现状..........................................

MES介绍................................................

MES国内外应用现状 ......................................

车间调度...............................................

基于多Agent的制造执行系统 ..............................

本研究课题的主要内容...........................................

2、基于多Agent的MES介绍...........................................

Agent的介绍....................................................

Agent的定义............................................

Agent的特性............................................

多Agent技术....................................................

MAS ............................................................

基于多Agent的MES ...............................................

3、基于单件小批量生产模式的车间调度模块.............................

调度功能模块概述................................................

单件小批量生产模式概述..................................

车间调度概述 ...........................................

算法分析及编程..................................................

调度方法概述 ............................................

调度功能模块的总体思想...................................

调度问题................................................

调度算法................................................

编程实现................................................

数据仿真分析....................................................

4x4的数据仿真..........................................

实例仿真...............................................

仿真总结...............................................

4、Agent的通信及封装................................................

AgentBuilder介绍...............................................

Agent间的通信..................................................

Agent的封装....................................................

5、总结与展望.......................................................

总结............................................................

展望............................................................ 致谢:.............................................................. 参考文献:.......................................................... 附录:..............................................................

1、绪论

本研究课题的背景和意义

伴随着经济全球化的发展,制造业的竞争日益激烈,当前越来越多的制造企业通过信息化提高自身综合竞争力。计划生产是以前制造业的传统生产方式:企业通过订单、市场情况等制定生产计划→计划下放→组织生产→产品派送,这种生产模式的底层控制没有实时的动态指导,使上层计划与车间实际产生较大误差,最后制约其自身生产效率的提高。制造执行系统(Manufacturing Execution Systems,MES)正好解决这一问题,它可以有效地实现上层计划与车间实际的信息交互,从而使车间的计划、调度、生产更合理。对于离散型制造业想提高综合竞争力,就更要采用以 MES为核心的技术来整合自身。

Agent又称代理,是一种具有自主性、交互性、反应性和主动性的高度自

治的实体[1]。基于多Agent的制造执行系统能满足敏捷制造环境下,工厂、车

间和设备单元等不同管理层次自主能动、协调工作的要求;具有易于扩充、灵活性好、可靠新高等特点。随着制造系统向市场快速反应、分布自治方向发展,基于Agent的制造执行系统被认为是替代传统分级制造系统的最有前途的选择[2]。

基于多Agent的MES能有力提高制造企业的竞争力,因此对于基于多

Agent的MES技术的研究就十分有意义。调度作为MES的核心功能之一,其是

否合理直接影响到MES在企业应用中的成败。本课题选MES车间作业调度功能模块为研究对象,将多Agent技术引入到调度模型,使调度系统具有高度的柔性、敏捷的反应性和较强可扩充性,能够适应复杂多变的车间生产环境,以提高MES的性能和实用价值。

本研究课题相关领域现状

1.2.1 MES介绍

从上世纪90年代,美国先进制造研究机构(Advanced Manufacturing Research,AMR)首次提出制造执行系统的概念,许多国际组织都对MES的功能给出了明确的定义,并且还相继开发了相应模型,用于描述和标准化这类软件系统。但是,这些MES模型给出的定义都不够全面,对生产实体的大部分选件和系统并没有做出明确的阐述[3]。为了规范MES系统,美国仪表协会(ISA)编制了ISA-95企业控制系统集成标准,在ISA-95标准中对MES系统给出详细定义。其第1部份“模型和专用术语”详细规定了业务经营和后勤支持系统与生产运行系统之间的接口,目前已被国际标准组织IEC/ISO所接受,正在发展成为国际标准。第2部分提供了系统之间的信息交换的基础。正在编制中的第3

部分试图通过定义和详细规定发生在管理层与制造层之间的数据流和功能来重点解决互操作性的问题[4]。

1.2.2 MES国内外应用现状

MES在发达国家已实现了产业化,其应用覆盖了离散与流程制造领域,并给企业带来了巨大的经济效益。MESA在93和96年两次对若干典型行业进行有关MES应用情况的调查,结果表明企业使用MES后,可有效缩短制造周期,缩短生产提前期,减少数据输入时间,改进产品质量或减少次品等。据权威咨询公司AMR完成的一份市场调查显示:2004年,全球MES市场营收为亿美元,与2001年相比,增长超过50%;2006年全球制造业在管理软件方面的投资,MES 位居第二,仅次于ERP。在国外很多行业应用中MES已和ERP相提并论,而且MES已成为目前世界工业自动化领域的重点研究内容之一[5]。

国内“十五”期间,流程工业领域MES成为技术研究突破口,在面向钢铁和石化两个典型流程制造业中已得到应用,开发出若干自主产权的MES系统。“十五”期间还对离散制造MES进行了探索性研究,并针对汽车、航空等典型离散行业进行了重点开发应用,已取得一定成果。

总体来说,与发达国家相比,我国无论在MES技术开发深度还是在应用广度上都存在一定差距,特别是对离散制造业MES系统的开发和应用。当前我国面向中小规模轻工设备制造行业的MES研究还远远不够。

1.2.3 车间调度

车间生产过程的调度问题,是制造系统统筹、管理、优化三项技术发展的核心。车间作业调度及控制是实现高效率、高柔性和高可靠性生产的关键,有效实用的调度方法己成为先进制造技术的基础。由于调度问题的复杂性和现实世界的多样性,任何一个调度系统都很难解决所有加工车间的调度问题[6]。车间调度作为制造系统的研究热点,人们研究和发展了许多调度和优化算法,如遗传算法、神经网络、禁忌搜索等,其思想和内容涉及数学、人工智能、物理学等众多领域,为解决复杂车间问题提供了许多新的思路。

1.2.4 基于多Agent的制造执行系统

多Agent系统(Multi-Agent System,MAS)是一种分布式自治系统,各Agent之间通过智能行为协调自身的知识、目标、规划,联合起来解决特定问题。由于其具有对开放、动态的现实环境良好的灵活性和适应性,因此MAS理论受到广泛重视,在制造领域,例如车间资源配置、生产调度与控制、生产管理决策等,获得越来越多的应用。基于多Agent的制造系统信息集成管理平台不同于传统企业管理平台,它是通过集成企业内部各个多Agent系统,使之相互构成一个动态网络化多层系统[7]。由于生产调度特别是动态调度,且其中存在许多

不确定性因素,这些导致其很难采用数学建模来模拟,MAS技术的采用可大大降低动态调度的复杂性,基于MAS的调度系统能够更好地适应车间制造环境的不断变化,从而增强了调度系统的敏捷性和鲁棒性[8]。

本研究课题的主要内容

随着企业向离散生产模式发展,传统的运作与管理方式已经无法满足发展要求,企业迫切需要采用与之相适应的现代生产管理方式。基于多Agent的制造执行系统成为企业对整个生产过程进行优化管理,实现敏捷制造的重要选择,成为企业提高管理效率的关键环节。

本课题研究主要完成以下内容:

(1) 了解Agent、MES、AgentBuilder开发平台、Java编程语言及Agent 的通信和封装功能。

(2) 选取基于单件小批量车间调度为MES系统的一个功能模块,选择适宜算法,运用Java语言将其编程实现。

(3) 了解某软包装设备总厂有限公司机加工生产车间的生产流程,并使用某一机型印刷机生产过程中的历史数据对功能模块进行仿真实现,得出仿真结果并进行分析。

(4) 用AgentBuilder平台将已设计好的调度功能模块封装成一个具有车间调度功能的Agent。

2、基于多Agent的MES介绍

本课题研究涉及Agent和多Agent技术、MAS及基于多Agent的MES等诸多方面,为了在课题研究中把握准各专业名词的定义,本章对各相关名词一一做出介绍,便于后续的课题研究者了解、学习。

Agent的介绍

2.1.1 Agent的定义

Agent原指代理,即商品经济活动中被授权代表委托人的一方。后被引入到人工智能、计算机科学和计算机辅助工程领域,形象的描述了计算机辅助软件工具的智能作用、地位、以及与人的关系[9]。迄今,Agent尚没有一个统一和权威的定义,但其基本思想是“使软件实体能够模拟人类的社会行为和社会观,即人类社会的组织形式、协作关系、进化机制,以及认知、思维和解决问题的方式”。[10]

当前对Agent的典型定义大致有两类:

(1) FIPA(Foundation for Intelligent Physical Agent) 对Agent的定义:Agent是驻留于环境中的实体,它可以解释环境中所发生事件的数据,并执行对环境产生影响的行为[11]。

(2) Agent软件研究者对Agent的定义:Agent是能为用户执行特定任务的、具有一定智能的、能自主执行任务的、并能与环境相互作用的软件程序[12]。2.1.2 Agent的特性

几乎所有被称为Agent的软件或硬件系统都具有以下的特性:

(1) 自治性(autonomy):指Agent可以在没有人或其他Agent的控制下运行,并且对自己的行为和内部运行状态具有某种控制能力。

(2) 社交能力(social ability):也称交流能力(communication ability) :Agent可以和其他的Agent 通过某种语言进行交互。

(3) 反应能力( reactivity):Agent 对周围环境有感知能力,并能通过自身行为改变环境。

(4) 自发行为(pro-activeness):Agent 不仅能够对环境做出反应,而且能够通过接受某些启示信息,做出基于目标的行为。

多Agent技术

今年,随着计算机科学与分布式人工智能技术的发展,多Agent技术成为研究热点,其主要研究不同自治的Agent在动态环境下,如果运用交互、合作、竞争、协商等智能完成复杂的控制或任务求解,由于其更能体现人类的社会智能,更加适合开发、动态的环境,所以被广泛运用于各领域。

多Agent技术的研究涉及理论和应用两方面[13]:理论上主要研究多Agent 系统的体系结构、多Agent间的体系结构,协调及学习机制。应用上主要研究多Agent技术在科学计算、计算机网络、机器人、制造业、电力系统、交通控制等中的应用。

MAS

多Agent系统(MAS)是分布式人I智能研究的一个前沿领域,它的研究重点在于如何协调系统中多个agent的行为使其协同工作。正如社会总体智能优于任何个人一样.多Agent系统协作求解能力也超过单智能体。MAS的agent是个实体.Shoham认为一个agent包含了信念、能力、决定和承诺等精神状态Freeman对agent做出了更具体的定义.agent=(m, k, a, i, I, s, r, g), 每个分量分别表示力法、知识、属性、推理机制、语击、消息操作、消息接受协议和全局知识。所谓Agent系统.则是这样一些智能体的集合。它在结构上可为三个层次.如图2-1所示.即通讯层.协作层和控制层[14]。

图2-1 MAS组成

基于多Agent的MES

基于多Agent的MES,是将多Agent技术引入到MES中,把MES的功能都由单个的Agent或者是几个组织良好的Agent通过通信来实现,这样MES就由几个能独立处理信息的Agent组成,并且利用Agent之间约定好的协议进行交互通信,使得系统内部的信息处理更加完善[15]。

根据中小规模包装设备制造企业实际情况,基于多Agent的MES大致由七类Agent组成,分别为用户接口Agent、调度Agent、工单Agent、资源Agent、文档Agent、工人Agent、质检Agent。MES的功能由这些Agent及它们之间的通信来实现。多Agent系统框架结构如图2-2所示。

图2-2 面向中小规模包装设备制造企业的MES系统结构

3、基于单件小批量生产模式的车间调度模块

设计基于单件小批量生产模式的车间调度模块作为本课题研究的主体部分,其设计算法如何,实现状态如何将直接影响课题结果,对课题有决定性作用。本章将从调度功能模块的含义入手,分别介绍单件小批量生产模式、车间调度,着重对车间调度算法的描述,通过画出的算法流程图编写相关程序,最后将实际数据应用与程序,得出相应结果并对其进行分析。

调度功能模块概述

3.1.1 单件小批量生产模式概述

由于制造业产品种类繁多,将其按照产品的生产稳定性及重复性分为大量生产,成批生产,单件小批量生产三种类型。单件小批量产品通常是根据用户特殊需求专门设计和生产的产品,适用范围小,需求量也小,通常应用于研制样机、试验件,某些大型产品的生产[16]。

随着经济的高速发展,市场结构发生了巨大变化:交通和信息技术的发展以及各国对贸易限制的减少使得生产竞争全球化,市场结构随着消费者的需求日趋个性化和多样化已转变为“牵拉”型。在此情况下,制造业所面临的市场是一个由消费者占主导地位、变化迅速且无法预测的市场。对于许多企业传统的大批大量生产模式难以适应现代市场,于是多品种、单件小批生产逐渐成为其主要生产模式。

3.1.2 车间调度概述

调度,就是指为了实现某一目标而对公共资源实行时间分配的一种行为。车间调度指根据车间加工过程中即时情况,对车间作业计划做出相应调整,使车间生产能够顺利进行,保证产品按期交货。车间调度对生产管理具有

重要意义,能够起到对生产计划补充和完善的作用。车间调度贯穿于企业的整个生产过程,是车间生产在动态实时环境下能够高效可靠运行的关键。

车间调度根据设备种类和数量的不同,可分为单台设备的调度和多台设备的调度。对于多台设备的调度,根据工件加工路线的特征和设备环境的不同,又可分成单件车间(Job Shop)调度、流水车间(Flow Shop)调度和开放式车间(Open Shop)问题三种类型[17]。

在单件车间调度过程中,不同工件有各自工艺路线。生产计划要运用不同类型的设备,如车床、钻床等,每个设备在一定时间内只能完成某一种特定的加工任务。Job Shop调度适合单件小批量生产模式,其在满足工件工艺路线要求的前提下,确定每台设备上不同加工任务的先后加工顺序,使得所有工件能在一个合理的时间内加工完毕,并达到一定的性能指标。

算法分析及编程

3.2.1调度方法概述

单件车间作业调度问题(Job Shop Scheduling Problem,JSSP)是一个典型求优化解的问题,即从问题可行解集合中选出最优。最优解问题有三个基本要素:变量、约束和目标函数。在实际车间生产调度中,工件工序以及设备选择是调度过程中的变量;工件的工艺路线是对变量的约束;加工总流程时间最短、设备利用率最高等都是生产调度的目标。

优先规则是以某方式测评待加工的作业使加工设备在空闲时,能够选择下一个要执行的作业,这种加工调度规则适用于n个工件在m台设备上加工的调度问题,利用此法则能够有效排序加工流程。优先规则不仅可以简化排序计算方法,减少工作量,加快排序的速度,而且能够给出较好的计划方案[18]。

多年来人们对优先法则进行了大量的研究,总结出许多条优先规则,但目前还没有哪一种规则能在动态的环境中满足多种目标同时最好。一些规则对于某一目标来说可能是最好的,但对于其它目标就不一定为最优,因此目标不同,采用的规则也各异。罗耀挥[19]根据生产调度的优化目标将法则做如下归纳:

(1) 以加工时间为目标:包括处理时间最短、剩余工序加工时间最短、剩余工序加工时间最长等。

(2) 以交货期为目标:包括交货期最早、松弛量最小、拖期罚款分派最小等。

(3) 以工件、设备状态为目标:包括先进先出、工件优先权、设备利用率最高等。

(4)以零件工艺信息为目标:包括剩余工序数最少、剩余工序数最多等。

3.2.2调度功能模块的总体思想

1:根据各工件其工序所要占用的不同加工设备,建立各个设备的可排加工顺序作业集合;

2:为每台可利用的设备分配加工作业,当有多个工件同时要在同一台设备上加工时,根据优化目标选择合适的优先规则或组合规则,计算作业工序的优先级,将优先级最高的作业分配给该设备加工;

3:当全部可利用设备都安排各自加工任务后,进入第1步循环,直至所有加工任务都计划完毕。

3.2.3调度问题

基于单件车间调度问题可以做如下描述:

存在n个工件和m台设备,n个工件所有工序都可在m台设备上加工,工件的工艺路线已预先给定,调度目标是确定每台设备上不同工件工序的加工顺序,使其满足某项指标最优。

该调度问题应当满足以下几点约束:

(1) 工件必须按其工艺路线加工,后道工序只有前道工序完成后方可开始;

(2) 每道工序一旦在一台设备上开始加工,便不能中断;

(3) 一台设备不能同时加工不同工件

(4) 同一工件不能同时在两台设备上加工

(5) 每道工序加工时只指定一台设备

以上为理论研究所归纳的约束,能够解决一些单件小批量车间的加工排序。结合本研究课题所采取的实际数据,不考虑实际可能存在多台加工设备能够加工同一工序的情况,即不考虑一道工序可在多台设备上加工时的设备选择问题,但要考虑多道工序竞争一台设备时的工件排序问题。

3.2.4调度算法

本课题研究算法参考许文砚[20]所提出基于单件小批量的车间调度算法。

设有n种工件需在m台设备上加工,为方便编程,对部分变量做如下定义:

workPieceNumber(n)为工件数,processNumber(m)为工序数;

processij(P

ij

)表示工件i的第j道工序;

allProcessNumberi(Q

i

)表示工件i的总工序数;

machineij(M

ij )表示工序P

ij

占用的加工设备;

timeij(T

ij )表示工序P

ij

的加工时间;

startTimeij(S

ij )表示工序P

ij

的开始时间;

finishTimeij(F ij )表示工序P ij 的完工时间;

freeTimeij(W ij )表示在工序P ij 开始加工之前所选定加工设备的空闲时间;

finalFinishTimei(F i )表示工件i 最后一道工序的完工时间。

i =1,2,……,n ;j =1,2,……,Q i ; T ij =F ij -S ij 。

本调度过程仅考虑单目标的车间作业排序问题,调度目标是确定工序P ij 的加工设备M ij ,通过求得工序P ij 的开始时间S ij 和结束时间F ij ,确定加工过程总

流程时间最短,即最后完工工件的结束时间最小。

本调度过程中要考虑:对于每台加工设备,确定要用该设备的各道工件工序前后顺序,对于多道工序竞争同一台设备的情况,为使各工件的加工进度均衡,且加工流程总时间较短,应优先安排未加工工序的工时之和最长的工件先进行加工。为了便于比较引入剩余加工时间的概念:

令sumTimeij(SumT ij )为工件i 在加工到工序P ij 时前j 道工序(包括第j 道

工序)的工时之和,表达式如下:

1j

ij ia a SumT T ==∑ (1)

令sumTimei(SumT i )为工件i 所有工序的工时之和,表达式如下:

1i Q i ia

a SumT T ==∑ (2)

工序P ij 的加工效率为R ij

ij ij i R SumT SumT = (3)

用surplusrij=1-R ij 代表相对剩余加工时间。

优先加工满足max(1-R ij )的工件,使最长的相对剩余加工时间减小,则可

保证各工件的加工进度尽可能均衡。

算法初始化:

1、根据R ij 公式计算R ij 及surplusrij ;

2、根据工艺路线,为每个工件建立一个工序数组queueP i [][],先加工的

工序排在数组前面,后加工的工序排在数组后面。工件工序采用如图3-1标记:

例如 代表工件1的第一道工序

本标记是根据实际数据每个工件的工序数不超

过10来进行假设的,不适用工序数超过10的情

况。

图3-1 工件工序标记

3、为每个工件Pi设一个变量Move(i)指向该工件下一步要加工的工序,每

调度完一道工序后将工序数组的下一个元素赋予Move(i);

4、为每道工序建立一个设备数组queueM[][],用以存放工序P

ij

的可用设备集合;其中设备标记直接用M01、M02、M03、、、整数表示,代表不同的加工设备。

5、为每台设备设一个调度指针Lk,其中0<k≤m,始终记录着该设备上最后一道工序的结束时间,初始值设为0,并对每台设备k设定一个任务队列

queueT

k

[][],按先后顺序存放每台设备上的加工任务,初始化时该队列为空。

初步排序:

步骤1:选取Move(i)中满足max(1-R

ij )的工序P

ij

,并将工序P

ij+1

赋予

Move(i);

步骤2:选择数组queueM[i][j]中满足min(L

k

)的设备k,若该数组中所有

设备的L

k

相等,则任选一台;

步骤3:将工序P

ij 插入到设备k的任务队列QueueT

k

的队尾;

步骤4:分别按下式计算P

ij 的开始时间S

ij

、完工时间F

ij

,选定设备在工序

的空闲时间W

ij ,然后更新相应设备的L

k

,令L

k

=F

ij

S ij =max{L

k

,F

ij-1

}; F

ij

=S

ij

+T

ij

; W

ij

=S

ij

-L

k

;

步骤5:遍历数组Move(i),若Move(i)≠NULL,转步骤1,若所有的

Move(i)=NULL,则初排结束。

调节排序:

在初排后,每台设备的调度指针Lk记录着该设备上的最后一个加工任务的结束时间,这时可根据王凤儒,徐蔚文,徐洪副[21]提出的调节算法进一步缩短加工路径和时间。

Setp1:求加工路径最长(即满足max(L

k

))的设备,此设备存在且不一定唯一;

Setp2:对其中任一设备k,判断其任务队列queueT

k

,若所有工序开始前

W

ij

均为零,则排序结果不可调节,算法结束。

Setp3:求第一个W

ij 不为零的工序,记为P

bc

,若此结点不是队列的队尾,

则进入Setp4;若此是该队列的队尾,且该设备上一加工任务结束时间大于工序

P bc-1的结束时间,则将P

bc

的开工时间提前至该设备上一加工任务的结束时间,

更新工序的开始时间S

bc 、结束时间F

bc

和设备空闲时间W

bc

,转Setp1,否则此

道工序不可提前,暂设W

bc

=0,转Setp1。

Setp4:令在该设备P

bc 的前一加工任务为P

fg

,后一为P

st

,若F

st-1

<S

bc

max{F

fg ,F

st-1

}+T

st

+T

bc

≤S

bc

+1,则交换P

bc

与P

st

在该设备上的加工顺序,则S

st

=max{F

fg ,F

st-1

},进入Setp5;否则暂时置W

bc

=0,转Step1。

Setp5:更新队列QueueTk中P

st

及其后所有工序的开工时间、完工时间、

设备空闲时间和L

k ,若L

k

<max(L

k

),恢复前面所有暂时置工序等待时间在置零

前的值,转Step1;若L

k >= max(L

k

),算法结束。

车间调度算法初步排序流程图如3-2,调整排序算法流程图如3-3:

图3-2 初步排序算法流程图

图3-3 车间调度调整排序算法流程图

3.2.5编程实现

编程采用java语言,在环境下运行调试,如图3-4。

图3-4 JDK版本及环境

调度排序功能代码在UltraEdit-32(图3-5)工具中编写。

图3-5 UltraEdit-32编写环境在UltraEdit-32编程工具环境下将车间调度算法编写为java代码,在JDK

环境里编译成一个java的.class文件,如图3-6。

图3-6 java代码的.class文件

在windows xp cmd环境下编译执行,算法结果输出形式如图3-7。

图3-7 算法输出形式图

由于本次所采用华鹰软包装设备总厂的仿真数据中每道工序只有单一设备可选,所以编写程序时假设每道工序只一台加工设备,结合上述算法和实际数据,对其进行了编写简化,即根据输入数据算出所有R

ij

,将每台设备所要加

工的不同设备工序作为输入(工序未排序),通过工序的R

ij

进行初步排序。本课题只对初排算法进行编写仿真,调整算法不作为本课题对象。课题选取了两组数据作为仿真输入,根据不同情况编写了相应代码,在附件中附录了本课题所编写的两个java代码。

数据仿真分析

4x4的数据仿真

工件数为4,各工件工序数都为4,4台设备(M01,M02,M03,M04),加工工时与设备时间表如下:

表3-8 工序工时与设备关系表

将数据输入程序,运行得出如下结果:

图3-9 4x4数据仿真输出

通过输出结果运用Microsoft Office Visio 工具将其转化为甘特图,结果如图3-10。

图3-10 4x4排序结果甘特图

3.3.2 实例仿真

表3-11为华鹰软包装设备总厂有限公司YA800AⅡ型印刷机机头的部分

注:上表的工时沿用公司的表示方法,即为方便统计工资。如:工件一的工序1,车工时实为9个工时,10元/小时,90元为加工这零件工资。

表3-11 YA800AⅡ型印刷机机头部分部件工序工时与设备关系表

将实际数据转化程序可接受数据形式,如表3-12:

表3-12 YA800AⅡ型印刷机机头部分部件仿真数据表

其中M01代表车所需设备,M02代表钳所需设备M03代表磨所需设备,M04代表铣所需设备M05代表刨所需设备。

输入数据表写调度程序,执行程序返回图3-13 结果:

图3-13华鹰数据仿真输出结果

转化成如图3-13的甘特图:

图3-13 YA800AⅡ型印刷机机头部分部件排序结果甘特图

3.3.3 仿真总结

本课题仿真基于车间单件小批量生产模式,研究针对工件的每道工序可在一台设备上进行加工的情况,主要考虑不同工序竞争同一加工设备时的资源分配方法,采用时间复杂度较小的优先分配方法和启发式规则求得较优解。根据理论算法分析和实例数据验证,可总结出此调度功能算法结构简单,时间复杂度较小,易于实现,通过对实际生产数据进行验证,得出算法可行且能够求得较为满意的解这一结论,该调度算法在传统的Job Shop车间作业调度问题的基础上,做了一定假设,这些假设可根据实际情况加以改变,使之能够适合企业复杂的生产环境,让其能更好的适合大多数企业实际生产,提高使用价值。

4、Agent的通信及封装

如何将设计好的车间调度功能模块进行封装,形成一个基于多Agent的MES车间调度功能模块,也是本次课题研究的内容。首先要了解Agent之间的通信机制及如何封装,有一定理论知识后结合本课题研究所采用AgentBuilder 平台,尝试对车间调度功能模块进行封装。本章分别介绍了Agent的封装、通

信以及AgentBuilder开发平台,在此基础上简单的叙述了车间调度功能模块的封装过程。

AgentBuilder介绍

AgentBuilder是一套用于构建智能Agent的集成开发工具,它由运行系统(Runtime System)和工具箱(Tools Box)两部分组成,其中工具箱包括用于管理基于Agent软件开发工程的全部工具,例如分析Agent操作领域的工具,设计和开发通信Agent的网络工具,定义Agent行为的工具,调试和测试工具等等;运行系统则包括Agent引擎及它提供执行Agent软件的环境。Agent程序与Agent引擎共同组成可执行的Agent[22]。

由于AgentBuilder的工具箱和运行时系统两部分所有组件都是通过Java 语言实现的,因此在任何支持Java并且拥有一个Java开发环境的机器或者操作系统上都可以进行Agent的应用和开发。同时,由AgentBuilder工具箱所创建的Agent也是基于Java语言的,所以它们可以在任何一个Java的虚拟机上执行。通过Java语言创建出来的智能Agent,可以在各种各样的计算机平台执行[23]。图4-1所示为AgentBuilder主要组件之间的关系。

图4-1 AgentBuilder主要组件之间的关系图

本课题采用AgentBuilder作为开发平台,实现MES调度功能模块设计,其主要特征如下:

(1) 提供了可视化编程工具来制定Agent的行为和运行;

(2) 容易创建软件智能Agent,不需要Agent和网络通信方面的专门知识;

(3) 构建的Agent内置有自主运行、跟踪环境、推理、与别的Agent通信的能力;

(4) 使用高层次的面向Agent的编程语言,通过制定Agent的信念、承诺、行为等直接概念就可以完成软件Agent的设计;

(5) 提供问题域的分析、Agent群的定义、Agent间相互作用的定义、Agent测试和调试等工具;

(6) 基于Java语言,对于创建跨平台的Agent应用提供了工具包;

(7) 支持多种编程语言,如Java、C++、C语言等。

(8) 支持CORBA和IIOP协议。

AgentBuilder所创建的Agent使用KQML语言通信机制,故其支持KQML所确定的行为。另外,AgentBuilder允许开发者定义新的内部Agent通讯命令以满足特殊的要求[24]。

开发智能Agent与其他开发活动相类似,开发人员同样要进行系统分析、设计、执行、测试/调试、整合和维护等步骤。图4-2所示为AgentBuilder开发Agent的过程。

图4-2 用AgentBuilder开发Agent的过程

Agent的开发过程实际上就是定义Agent行为的过程。AgentBuilder支持创建用户界面库和Agent行为库,以及创建Agent定义文件。用户界面库可用于构建Agent的用户界面,Agent行为库中可确定Agent的行为。用户界面库和行为库包含工程附属类(Project Accessory Class,PAC)库。定义好Agent的行为后,要把Agent程序载入运行Agent引擎(Reticular’s Runtime Agent Engine)中,它是一种高绩效的执行机制,可以解释Agent程序,执行用户界面库和Agent行为库中的行为。图4-3为AgentBuilder的环境界面

图4-3 AgentBuilder的环境界面

Agent间的通信

在MAS中,Agent之间的协同是实现问题求解的关键,而Agent之间的合作和协调离不开Agent之间的通信,所以了解Agent间的通信有利于实现问题的解决。KQML是目前被广泛采用的Agent通信语言之一,KQML其既是一种消息格式,也是一种消息处理协议,它提供了一套标准的Agent通信原语。KQML 分为内容层、消息层和通信层等三个层次,其中,内容层以KIF (knowledge Interchange Format)为语法对需要传输的知识进行编码;消息层包括行为类型、资格等,其行为类型主要从言语行为(Speech Acts)理论[Nilsson1999]演化而来,该层的基本功能是确定消息传递时所使用的协议、动作或原语(如判断、查询、命令,或是一组已知的原语);通信层包含底层的通信参数,例如消息的发送者、接收者、唯一标识、同步等。

KQML的基本格式如图4-3所示:

图4-3 KQML的基本格式

一般地,被发送的语言段称为消息,消息的形成就如同一个编码过程,消息的解释执行则似一个解码过程。KQML类似于高级语言,其编码既可直接由编程人员完成,也可由程序其自身生成,解码则完全由程序内部执行。由于KQML 既是一种通信语言,又是一种通信协议和标准,故每个Agent只要遵守该协议,就可受到它所提供的通信支持,而要遵守KQML协议,每个Agent都必须添加一个KQML语言解释器。由于基本交互原语只完成一些基本操作,故普通Agent只需实现基本原语解释即可。此外,还有一种名为辅助器(Facilitator)的Agent则需完成一些特殊功能,所以它还应支持特殊原语的解。在多Agent 系统中辅助器也可能有多个。

实体Agent的基本交互模式如图4-4所示。实体Agent通过KQML描述的消息实现多Agent间的通信。同时,实体Agent与知识库中的规则(即对象关系定义系统所给出的实体对象关系)也由KQML进行传递。

图4-4 Agent的基本交互模式

Agent的封装

Agent是一个具有自适应性和智能性的软件实体,能代表用户或其它程序,以主动服务的方式完成一项工作。也就是说,Agent是一个封装的有独立功能的模块,它包括自己的数据和对这些数据进行操作的算法,它能够接受和处理其他 Agent发送来的消息,也能向其他 Agent发送消息,是一个有独立解决问题能力、并随环境变化而变化的实体。在利用AgentBuilder平台开发Agent 时,开发者首先需要对问题域进行分析,了理解代理和基于代理的解决方案的功能和性能需求,完成域分析后,开发者还要对代理结构进行定义,将问题分解为能够用一个或多个代理完成的功能。开发者还必须确定在解决全局问题时每一个代理和它的作用,然后创建一个框架代理并定义这个代理和别的代理相互作用时的基本特征。在确定了代理和他们的角色后,开发者便定义代理间的通信协议。协议编辑器使得开发者能够容易确定代理间所需的消息和握手规则。完成代理定义后,便确定代理行为。AgentBuilder为确定代理的行为规则、信念、职责、意图和代理能力提供了工具,支持用户接口库和代理行为库的创建,建立代理定义文档。用户接口和行为类组成了工程辅助类(Project Accessory Class)库,用户接口库能够构建代理的用户接口。在代理行为库中确定代理的行为,主要有以下几步:首先定义行为的名称和参数,接着将行为和对象模式中定义的对象方法关联,最后导入已有类库或者开发能够实现任务的Java类并在代理的行为库中存储这此类。代理定义文档包含详细的代理初始精神模型和行为的详细说明。这份文档和代理行为库、用户接口库确定了代理的行为。这三部分构成了代理程序。最后将代理程序载入错综实时代理引掣,创建代理应用程序。这样就完成了利用AgentBuilder开发和封装Agent过程。

由于AgentBuilder是和的版本兼容,所以在编译java代码成.class文件时要用环境,在和生产的.class文件可能无法导入到AgentBuilder平台上。

首先在AgentBuilder Project Manager上建立一个MES Project,在其目录下建立一个Machining WorkShop Agency Properties,最后建立一个车间调度Agent(SchedulingAgent),如图4-5.

图4-5 创建MES车间调度算法Agent

接着定义SchedulingAgent的各项属性,如图4-6:

图4-6 定义SchedulingAgent的各项属性

接着创建一个JobShop Ontology, 通过Ontology Manager—Tools---Object Modeler---Files---import classes路径导入用户自己写的类(即导入已编译的.class文件)如图4-7:

4-7导入.class文件过程图

最后将创建出来的JobShop Ontology 加入到SchedulingAgent中(图4-8)

图4-8 JobShop Ontology 加入SchedulingAgent过程图

5、总结与展望

总结

本课题以华鹰公司机加工车间为应用背景,选取YA800AⅡ型印刷机生产过程的历史数据作为仿真对象,在了解多Agent技术和AgentBuilder开发平台的基础上,设计出MES系统的一个车间功能调度模块,并通过对 Agent的封装实现以及Agent之间的通信的了解,对功能模块进行初步封装。通过本次设计让自己学习到了Agent、MES、AgentBuilder开发平台、调度算法等许多新的知识,更让自己了解到机械知识在企业实际生产中应用的重要性。本次课题的重心为用Java语言将车间调度算法实现,主要运用到编程开发方面的知识,对我来说大部分都是新的东西。虽然在设计学习过程中经常遇到问题,但通过与老师、师姐、同学沟通,查阅相关文献等途径大部分都得到比较满意的解决。

展望

本次设计的MES车间调度功能模块是在一定约束条件下建立起来的,对于一些超出约束的实际生产情况不适合,希望在有后续设计时能够改良算法、程序,放宽条件约束,使之适用范围更为广阔,应用价值更大。将来应加深对AgentBuilder开发平台的了解,能够熟练的运用它开发出智能化的Agent,并有效合理的封装,便于企业客户使用。

致谢:

本论文是在导师范颖晖副教授及熊晓琼研究生师姐的精心指导下完成的。从开始的课题选题、方案设计,选题的变更,进而进行课题的设计到最后开始论文写作,整个过程都倾注了导师的辛勤劳动和大量的心血,在此,谨向我的导师表示最衷心的感谢!

同时,在此要感谢我同组的张芳瑜和苏桥满,谢谢你们在程序算法与程序仿真数据中所给出的宝贵意见与建议,也感谢你们对我毕业设计的指导与帮助。

参考文献:

[1] 曹渠江,徐明.基于多Agent的MES任务调度的研究与设计.微计算机信息[J],2008(33):1-6.

[2] 乔兵,朱剑英.多Agent智能制造系统研究综述.南京航空航天大学学报[J],2001,33(1):1-7.

[3] 西门子自动化与驱动集团自动化系统部.MES模型与ISA-95标准[EB/OL] .[2006-2-27

[4] ISA. ISA95 Enterprise-Control System Integration Part 3: Activity Models of manufacturing Operations Management [R].

[5] 潘美俊,饶运清.MES现状和发展趋势.现代设计与先进技术制造[J],2008(43):43-46

[6] 钟少波.机械制造车间调度分析及其实现.科技创新导报[J],2008,12(C):76

[7] 李美芳.CIMS及其发展趋势.现代制造工程[J],2005(9):113~115

[8] 谢畅.基于多Agent的MES调度研究[D].华中科技大学,2004.

[9] 乌兰木其,邓家提.Agent与对象.计算机集成制造系统-CIMS[J],1999(5):6-7

[10] 曾广周,王晓琳. 一类面向Agent的软件开发方法研究[J].小型微型计算机系统,1998,19(7):64-68

[11] FIPA Rationale,,1996.

[12] 张丽霞.多Agent技术及其在供应链中的应用研究[D].天津大学,2004.

[13] Michael W, agents:theory and practice[J].Knowledge Engineering Review,

1995,10(2):115-152

[14 ]赵娜,郑廷斌,洪力多.Agent技术的研究综述.科技信息[J],2008,9:71-72

[15] 胡俊,姚锡凡,颜亮,吴昌生.基于Multi_Agent的制造执行系统的生产控制研究.制造技术与机

床[J],2008,12:50-51

[16] 王竟宇.如何提高单件小批量生产能力.工业技术[J],2006,10(3):13-15

[17] T Gonzalez,S Sahni,Flowshop and jobshop schedules:complexity and approximation,Operations Research,1978(26):36-52

[18] 王宁生,计算机集成与柔性制造,北京,航空工业出版社,1995:119-129

[19] 罗耀挥,车间作业计划调度系统的研究与开发[D],西安:西北工业大学,2002

[20] 许文砚.基于单件小批量生产模式的车间调度方法研究和系统开发[D],南京:南京航空学院,2005

[21] 王凤儒,徐蔚文,徐洪副,用效率调度算法求解非标准作业车间调度问题,计算机集成制造系统,2001,7(7):12-15

[22] 蔡俊.基于多Agent的网络教学模型的研究[D].浙江师范大学,2000.

[23] 陈亚军,夏安邦,毕睿华.基于Agent的电力市场竞价交易系统[J].计算机时代,2004(5):31-33.

[24] 孙超.基于Multi-Agent的大规模定制信息系统原型研究与设计[D].河北工业大学,2006.

附录:

M4x4 实现代码

public class JobShop {

public static void main(String[] args) {

int workPieceNumber = 4; ength;

j++) {

sumTi[i] += timeij[i][j];

for(int k = 0; k <= j; k++) {

sumTij[i][j] += timeij[i][k];

本文来源:https://www.bwwdw.com/article/qjxl.html

Top