基于代理的自动工艺实现方案

40
基基基基基基基基基基基基基 基基基基基基基基基基基基基

description

基于代理的自动工艺实现方案. 背景 代理 方案. 背景. 概念: CIMS : 计算机集成制造系统 CAPP : 计算机辅助工艺规划或设计 CAD : 计算机辅助设计 CAM : 计算机辅助制造 MIS : 管理信息系统 MAS : 制造自动化系统 CAQ : 质量保证系统. CAD/CAPP/CAM. CAD. MAS. MIS. CAPP. CAM. CAQ. 结构图. CIMS. CAPP 应具有如下的性能: - PowerPoint PPT Presentation

Transcript of 基于代理的自动工艺实现方案

基于代理的自动工艺实现方案基于代理的自动工艺实现方案

•背景背景•代理代理•方案方案

背景背景概念:概念:

CIMSCIMS ::计算机集成制造系统计算机集成制造系统CAPPCAPP ::计算机辅助工艺规划或设计计算机辅助工艺规划或设计 CADCAD ::计算机辅助设计计算机辅助设计CAMCAM ::计算机辅助制造计算机辅助制造MISMIS ::管理信息系统管理信息系统MASMAS ::制造自动化系统制造自动化系统CAQCAQ ::质量保证系统质量保证系统

CAD

CAD/CAPP/CAM

CAPP

CAM

CAQ

MIS MAS

结构图 CIMS

CAPPCAPP应具有如下的性能:应具有如下的性能:•它应作为CAD它应作为CAD // CDM集成设计辅助的工CDM集成设计辅助的工

具来工作 具来工作 ,, 即自动地从工程 即自动地从工程 (( 产品设计 产品设计 ))方面获得输入数据 方面获得输入数据 ,, 并且产生出一整套工并且产生出一整套工艺规程 艺规程 ,, 供编制生产计划和生产、材料、供编制生产计划和生产、材料、质量控制等使用 质量控制等使用 ;;

•它应为加工的指令安排、生产计划调度、它应为加工的指令安排、生产计划调度、工资单计算和材料发放等提供基本数据 工资单计算和材料发放等提供基本数据 ;;

•它应是适合于不同零件种类的通用化设计 它应是适合于不同零件种类的通用化设计 ;;

•它应具有一个能充分利用计算机潜力的交它应具有一个能充分利用计算机潜力的交互式在线处理系统 互式在线处理系统 ;;

•它应具有便利的用户界面 它应具有便利的用户界面 ,, 并为操作人员并为操作人员提供指南 提供指南 ;;

•系统是模块化、结构化的 系统是模块化、结构化的 ,, 以便容易扩展 以便容易扩展 ,,修理和维护 修理和维护 ;;

•与其生产设备一样 与其生产设备一样 ,, 它应具有经济性。 它应具有经济性。

传统传统 CAPPCAPP 的主要困难的主要困难研制周期长研制周期长适应性差适应性差实用性差实用性差低水平重复 低水平重复

提出基于代理的提出基于代理的 CAPPCAPP 采用目前较为先进的代理技术采用目前较为先进的代理技术

自动工艺自动工艺是是 CAPPCAPP 系统的核心部分,自动系统的核心部分,自动工艺模块性能直接影响整个系统的性能。工艺模块性能直接影响整个系统的性能。通过通过代理技术代理技术来实现自动工艺过程是目前来实现自动工艺过程是目前较为先进的技术。在自动工艺流程上,一较为先进的技术。在自动工艺流程上,一般有般有四个主要的模块四个主要的模块:输入器、生成器、:输入器、生成器、审查器以及批准器。审查器以及批准器。

它们分别是用四个代理类来实现的。因它们分别是用四个代理类来实现的。因此,相应的此,相应的四个代理类四个代理类分别是:输入器代分别是:输入器代理类、生成器代理类、审查器代理类以及理类、生成器代理类、审查器代理类以及批准器代理类。 批准器代理类。

代理代理

代理概念及其性质代理概念及其性质代理池概念及其机制代理池概念及其机制

代理概念及其性质代理概念及其性质

•概念:是一类在特定环境下能感知环境,概念:是一类在特定环境下能感知环境,并能自治地运行以代表其设计者或使用者并能自治地运行以代表其设计者或使用者实现一系列目标的计算实体或程序。实现一系列目标的计算实体或程序。

从软件实现角度,它是一个计算机程序,从软件实现角度,它是一个计算机程序,通过预定义的协议(公用语言)与外部通过预定义的协议(公用语言)与外部 AgAgentent 进行通信。进行通信。

代理和对象的区别在于代理的自主性和代理和对象的区别在于代理的自主性和协作性。协作性。

• AgentAgent 的四个最基本特性:针对的四个最基本特性:针对环境性、环境性、反应性、自治性、面向目标性反应性、自治性、面向目标性。虽然还可。虽然还可有移动性、社会性、学习性等其它特性,有移动性、社会性、学习性等其它特性,但只要具备了上述四个特性就可以认为它但只要具备了上述四个特性就可以认为它是一个是一个 AgentAgent ,我们将这样的,我们将这样的 AgentAgent 称为称为最小最小 AgentAgent 。。

在最小在最小 AgentAgent 的基础上,根据各自的应用的基础上,根据各自的应用情况还可再拥有其的特性,从而将情况还可再拥有其的特性,从而将 AgentAgent分成不同的种类:如自治分成不同的种类:如自治 AgentAgent 、软件、软件 AgAgentent 、移动、移动 AgentAgent 等。 等。

代理池概念及其机制代理池概念及其机制

•概念:是一个负责调度代理的载入与卸载,概念:是一个负责调度代理的载入与卸载,响应代理之间发送的事件以及做出相应的响应代理之间发送的事件以及做出相应的处理,而且保存每个代理的相关信息以及处理,而且保存每个代理的相关信息以及能够恢复保存的信息的容器。能够恢复保存的信息的容器。

•代理池机制代理池机制

代理 代理

代理 代理

•代理池功能代理池功能装载装载 // 卸载代理卸载代理处理代理之间通信处理代理之间通信保存保存 // 恢复代理信息恢复代理信息监视代理工作情况监视代理工作情况

方案方案

•谈谈我们目前项目谈谈我们目前项目•提出星型工艺模型提出星型工艺模型

谈谈我们目前项目谈谈我们目前项目

概述:我们目前正在做的项目(即“天概述:我们目前正在做的项目(即“天工”项目)主要包括三大模块工”项目)主要包括三大模块 ::

系统管理模块系统管理模块 项目管理模块项目管理模块 自动工艺模块自动工艺模块我们小组做的是自动工艺模块 我们小组做的是自动工艺模块

工艺流模型图工艺流模型图

工艺路线审查代理任务分配代理 工艺路线生成代理分类编码代理

工艺路线批准代理 专业工艺生成代理 专业工艺审查代理 专业工艺批准代理

图中箭头意义图中箭头意义

任务成功提交

任务成功反馈

任务出错反馈谁操作?谁操作?白色箭头:用户操作完成白色箭头:用户操作完成粉红色箭头:系统自动完成粉红色箭头:系统自动完成红色箭头:用户操作完成红色箭头:用户操作完成

工艺层次工艺层次

工艺路线

工作中心

工步

专业工艺生成代理处完成

工艺路线生成代理完成

任务结构任务结构

分类编码信息 工艺路线生成信息工艺路线审查信息

工艺路线批准信息专业工艺生成信息专业工艺审查信息

任务基本信息

专业工艺批准信息

任务基本信息任务基本信息任务 ID 任务名称

文档 ID零件 ID 零件图号

分类编码信息分类编码信息零件编码

工艺路线生成信息工艺路线生成信息典型零件

用户名称任务状态零件名称

工艺路线组合

工艺路线审查信息工艺路线审查信息审查人名称 审查密码 审查意见

工艺路线批准信息工艺路线批准信息批准人名称 批准密码 批准意见

专业工艺审查信息专业工艺审查信息

专业工艺组合

专业工艺生成信息专业工艺生成信息

审查人名称 审查密码 审查意见

专业工艺批准信息专业工艺批准信息

批准人名称 批准密码 批准意见

任务活动过程任务活动过程

任务基本信息

任务分配信息

任务及前面代理信息

分类编码信息

工艺路线生成信息

任务及前面代理信息

工艺路线生成代理任务分配代理 分类编码代理

任务 任务 任务传递 传递

提交

传递

提交 提交

新建

任务

专业工艺批准代理

数据库

提取信息

写入数据库读取信息

写入信息

成功反馈信息

传递

提交删除任务

提出星型工艺模型提出星型工艺模型

提出:提出: 前面采用前面采用链式结构链式结构把各代理链接在一起。把各代理链接在一起。 此种结构缺点:插入此种结构缺点:插入 // 删除节点困难,即删除节点困难,即

不具有扩展性;不具有扩展性; 为此提出为此提出星型结构星型结构。。

工艺流程分为四大类(分类编码、工艺生工艺流程分为四大类(分类编码、工艺生成、工艺审查和工艺批准)以及任务分配。成、工艺审查和工艺批准)以及任务分配。

因此,星型结构如下实现:因此,星型结构如下实现: (( 11)前面四类用)前面四类用节点代理节点代理来实现;来实现; (( 22)任务分配用)任务分配用中枢代理中枢代理来实现。来实现。 能够灵活地添加能够灵活地添加 // 删除节点代理。删除节点代理。

工艺路线生成

专业工艺生成

工艺路线审查专业工艺审查

工艺路线批准

专业工艺批准

分类编码

任务分配

星型模型结构图

批准器代理类

审查器代理类

生成器代理类

输入器代理类 中枢代理

注:1. 各代理类:节点代理2. 红色虚框内:实体代理

•工艺层次工艺层次 层次 1

层次 2

层次 n

•任务结构任务结构

任务基本信息

信息字段节点代理 1

节点代理 n 信息字段

节点代理外部结构节点代理外部结构

节点代理 信息事件接收 发送

接收发送

注:注:事件:接收(未做工艺的)任务事件与发送(做完工艺 事件:接收(未做工艺的)任务事件与发送(做完工艺

的)任务事件; 的)任务事件; 信息信息 : : 在任务结构中相应的字段,由这个代理填写此字段在任务结构中相应的字段,由这个代理填写此字段

信息。信息。

•节点代理内部结构节点代理内部结构

功能模块工艺层次添加

工艺层次 功能模块添加

注:注:各类节点代理在内部结构上不同,体现在功能模块上不同;各类节点代理在内部结构上不同,体现在功能模块上不同; 同类节点代理的不同实体内部结构相同,体现在功能模块同类节点代理的不同实体内部结构相同,体现在功能模块

上相同,但是工艺层次的数目不一致,从而它们也体现出上相同,但是工艺层次的数目不一致,从而它们也体现出不同。不同。

•中枢代理中枢代理

任务 1

任务 2

任务 n

提取任务功能模块

新建任务

添加 /删除节点代理功能模块

节点代理 1

节点代理 2

节点代理 n

控制任务结构功能模块

来源于系统设置

注:注:代理池不负责代理之间通信,由中枢代理代理池不负责代理之间通信,由中枢代理

接管;接管;中枢代理负责添加中枢代理负责添加 // 删除节点代理;删除节点代理;

批准器

审查器 新代理类

生成器

输入器

任务分配

添加节点代理结构示图

专业工艺批准

专业工艺审查 新实体代理

专业工艺生成

分类编码

任务分配

添加代理类 添加实体代理

•添加节点代理算法public void addNodeTypeAgent(String typeName,int typeID,Vector taskField)public void addNodeTypeAgent(String typeName,int typeID,Vector taskField){//{//添加一个新节点类型代理添加一个新节点类型代理

backboneAgent bbAgent=(backboneAgent)agentPool.getBackboneAgent();backboneAgent bbAgent=(backboneAgent)agentPool.getBackboneAgent();//// 从代理池中获得中枢代理从代理池中获得中枢代理

Hashtable nodeTypeAgentList=(Hashtable)bbAgent.getNodeTypeAgentListHashtable nodeTypeAgentList=(Hashtable)bbAgent.getNodeTypeAgentList(); (); //// 从中枢代理中获得节点类型代理列表从中枢代理中获得节点类型代理列表

nodeTypeAgentList.add(typeID,typeName);nodeTypeAgentList.add(typeID,typeName);//// 在节点类型代理列表中添加指定的新节点类型代理在节点类型代理列表中添加指定的新节点类型代理

Hashtable taskFabricList=(Hashtable)bbAgent.getTaskFabricList();Hashtable taskFabricList=(Hashtable)bbAgent.getTaskFabricList();//// 从中枢代理中获得任务结构列表从中枢代理中获得任务结构列表

taskFabricList.add(typeID,taskField);taskFabricList.add(typeID,taskField);//// 在任务结构列表中添加指定的新节点类型代理的任务字段在任务结构列表中添加指定的新节点类型代理的任务字段

}}

public void addNodeEntityAgent(String name,int ID,int typeID,Vector taskField)public void addNodeEntityAgent(String name,int ID,int typeID,Vector taskField){//{//添加已存在的节点类型代理的一个节点实体代理添加已存在的节点类型代理的一个节点实体代理backboneAgent bbAgent=(backboneAgent)agentPool.getBackboneAgent();backboneAgent bbAgent=(backboneAgent)agentPool.getBackboneAgent();//// 从代理池中获得中枢代理从代理池中获得中枢代理if(!(bbAgent.existNodeTypeAgent(typeID)))return;if(!(bbAgent.existNodeTypeAgent(typeID)))return;////判断是否存在此种节点类型代理,若不存在则返回判断是否存在此种节点类型代理,若不存在则返回Hashtable nodeTypeAgentList=(Hashtable)bbAgent.getNodeTypeAgentList(); Hashtable nodeTypeAgentList=(Hashtable)bbAgent.getNodeTypeAgentList(); //// 从中枢代理中获得节点类型代理列表从中枢代理中获得节点类型代理列表

Hashtable nodeEntityAgentList=(Hashtable)bbAgent.getNodeEntityAgentList();Hashtable nodeEntityAgentList=(Hashtable)bbAgent.getNodeEntityAgentList();//// 从中枢代理中获得节点实体代理列表从中枢代理中获得节点实体代理列表nodeEntityAgentList.add(ID,name);nodeEntityAgentList.add(ID,name);//// 在节点实体代理中添加新节点实体代理在节点实体代理中添加新节点实体代理Hashtable taskEntityList=(Hashtable)bbAgent.getTaskEntityList();Hashtable taskEntityList=(Hashtable)bbAgent.getTaskEntityList();//// 从中枢代理中获得任务列表从中枢代理中获得任务列表Vector v=(Vector)nodeTypeAgentList.get(typeID)Vector v=(Vector)nodeTypeAgentList.get(typeID)Enumeration e=v.elements();Enumeration e=v.elements();while(e.hasMoreElements())while(e.hasMoreElements()){{ String str=(String)e.nextElement();String str=(String)e.nextElement();

taskEntityList.add(name+"_"+str,"");taskEntityList.add(name+"_"+str,"");}//}// 在任务实体列表中添加指定的新节点实体代理的任务字段,初始值置空在任务实体列表中添加指定的新节点实体代理的任务字段,初始值置空Agent newAgent=new Agent(name);Agent newAgent=new Agent(name);//// 用指定名称构造一个新代理用指定名称构造一个新代理agentPool.addAgent(newAgent);//agentPool.addAgent(newAgent);// 把这个新代理添加到代理池中把这个新代理添加到代理池中

}}

批准器

审查器

生成器

输入器

任务分配

删除节点代理

专业工艺批准

专业工艺审查

专业工艺生成

分类编码

任务分配

删除代理类 删除实体代理

•删除节点代理算法public void delNodeTypeAgent(int typeID)public void delNodeTypeAgent(int typeID){//{//删除一个新节点类型代理删除一个新节点类型代理

backboneAgent bbAgent=(backboneAgent)agentPool.getBackboneAgent();backboneAgent bbAgent=(backboneAgent)agentPool.getBackboneAgent();//// 从代理池中获得中枢代理从代理池中获得中枢代理

if(bbAgent.existNodeEntityAgent(typeID))return;if(bbAgent.existNodeEntityAgent(typeID))return;////判断是否存在此种节点类型代理的节点实体代理,若存在则返回判断是否存在此种节点类型代理的节点实体代理,若存在则返回

Hashtable nodeTypeAgentList=(Hashtable)bbAgent.getNodeTypeAgentListHashtable nodeTypeAgentList=(Hashtable)bbAgent.getNodeTypeAgentList(); (); //// 从中枢代理中获得节点类型代理列表从中枢代理中获得节点类型代理列表

nodeTypeAgentList.remove(typeID);nodeTypeAgentList.remove(typeID);//// 在节点类型代理列表中删除指定的新节点类型代理在节点类型代理列表中删除指定的新节点类型代理

Hashtable taskFabricList=(Hashtable)bbAgent.getTaskFabricList();Hashtable taskFabricList=(Hashtable)bbAgent.getTaskFabricList();//// 从中枢代理中获得任务结构列表从中枢代理中获得任务结构列表

taskFabricList.remove(typeID);taskFabricList.remove(typeID);//// 在任务结构列表中删除指定的新节点类型代理的任务字段在任务结构列表中删除指定的新节点类型代理的任务字段

}}

public void delNodeEntityAgent(String name,int ID,int typeID)public void delNodeEntityAgent(String name,int ID,int typeID){//{//删除已存在的节点类型代理的一个节点实体代理删除已存在的节点类型代理的一个节点实体代理backboneAgent bbAgent=(backboneAgent)agentPool.getBackboneAgenbackboneAgent bbAgent=(backboneAgent)agentPool.getBackboneAgent();t();//// 从代理池中获得中枢代理从代理池中获得中枢代理Hashtable nodeEntityAgentList=(Hashtable)bbAgent.getNodeEntityAgenHashtable nodeEntityAgentList=(Hashtable)bbAgent.getNodeEntityAgentList();tList();//// 从中枢代理中获得节点实体代理列表从中枢代理中获得节点实体代理列表nodeEntityAgentList.remove(ID);nodeEntityAgentList.remove(ID);//// 在节点实体代理中删除指定在节点实体代理中删除指定 IDID 的节点实体代理的节点实体代理Hashtable taskEntityList=(Hashtable)bbAgent.getTaskEntityList();Hashtable taskEntityList=(Hashtable)bbAgent.getTaskEntityList();//// 从中枢代理中获得任务列表从中枢代理中获得任务列表Vector v=(Vector)nodeTypeAgentList.keys();Vector v=(Vector)nodeTypeAgentList.keys();Enumeration e=v.elements();Enumeration e=v.elements();while(e.hasMoreElements())while(e.hasMoreElements()){{

String str=(String)e.nextElement();String str=(String)e.nextElement();if(includeKey(name))taskEntityList.remove(str);if(includeKey(name))taskEntityList.remove(str);

} //} //函数函数 includeKeyincludeKey用来判断关键字用来判断关键字 strstr 中是否存在中是否存在 namename 前缀,若存在则前缀,若存在则删除删除agentPool.delAgent(name);agentPool.delAgent(name);//// 在代理池中删除指定名称的代理在代理池中删除指定名称的代理

}}

以后的工作以后的工作

•实现代理的移动性实现代理的移动性•增强代理的智能性增强代理的智能性•进一步完善星型模型的功能进一步完善星型模型的功能