自己再苦再累也要坚持:智能化虚拟实验室实现方法的研究2

来源:百度文库 编辑:九乡新闻网 时间:2024/04/27 06:41:39
智能化虚拟实验室实现方法的研究
刘志广 吕保和 吴海霞 岳锌
(大连理工大学 大连116023)
【摘 要】 结合开发仪器分析虚拟实验室的实践,从认知模拟方法、组件构造思想与技术和开发技巧三个方面探讨了智能化虚拟实验室实现方法。
【关键词】 虚拟实验室,vb应用,cai软件,activex
多媒体计算机技术与仪器技术的结合构成了虚拟实验室实现的基础,使人们拥有自己实验室的幻想与愿望可以在计算机屏幕上通过场景式图形界面而得以“实现”。虚拟仪器技术与认知模拟方法的结合也赋予虚拟实验室的智能化特征,无论是学生还是教师,都可以自由地、无顾虑地随时进入虚拟实验室操作仪器,进行各种实验。不但为实验类课程的教学改革及远程教育提供了条件和技术支持,还可以随时为学生提供更多、更新、更好的仪器。
虚拟实验室技术归根结底仍然是一种软件技术与认知模拟理论的统一体,而这两个领域目前都处于飞速发展时期,所提出的任何新思想、新技术、新方法、新理论都将推动智能化虚拟实验室技术的发展。近年来,我们曾研究开发了仪器分析虚拟实验室,本文结合开发实践,从认知模拟、组件构造和开发技巧三个方面探讨了智能化虚拟实验室的实现方法与技术。
一、虚拟实验室中的认知模拟方法
具有人工智能使虚拟实验室应具备的基本特征之一,表现在人们可以自主地、灵活地模拟操作各种实验仪器,完成各种分析测试任务,评价实验者的操作水平与实际能力。而智能化需要建立在人们对认知模拟方法的研究基础之上,就目前而言,传统人工智能(ai)与人工神经网络(ann)是认知模拟的两种主要途径。基于物理符号机制的传统ai采取自顶向下的策略和启发式搜索方法,可以十分有效的处理具有精确性质的结构知识;而基于联接机制的ann采取自底向上的策略和动态自主制方法,可以成功处理不精确的非结构知识。对于一个完整的知识模拟过程来说,则可以分为知识的获取,知识的表达,知识的存储,问题求解,结果解释等五个方面。
在人工认知系统中,知识获取的有效手段是“学习”,而机器学习则是一个相当复杂的问题。在专家系统中(传统人工智能模式)是将专家知识转变成符号直接输入的“硬灌学习”方式,但ai系统也发展了示例学习,观察与发现学习,类比学习等以支持机器学习。人类专家的知识和思维方法常常是模糊不清的,在解决问题中往往说不清它到底用了那些具体的知识,因此如何将含蓄不清的知识转化为精确的物理符号,是传统ai所面临的困境之一。与传统ai不同,人工神经网络可利用不是很精确的实例,只要给定输入、输出数据集,ann就可以在一定准则下通过学习来获取知识,甚至可以在只有输入数据集的情况下,通过自组织学习,实现自动知识获取。传统ai是用物理符号和规则来表达知识,这就使得基于符号与规则的知识表达系统既可以有效的描述精确的结构性知识,又可以有效的描述高层次抽象知识,而对于不精确的低层次知识,其表达能力则相当弱。与传统ai相反,ann是以网络中的联接权来表达知识,而要表达精确的、高层次的结构知识,则要比传统ai困难的多。传统ai将大量的用符号和规则表达的知识,按一定的结构组织成知识库,知识库结构常常是由规则树组成的森林。与传统ai的集中存储方式相反,ann的知识就存储在各个神经元的联接强度中,从而将知识分布于整个网络。逻辑演绎法和状态链推理是传统ai常用的问题求解方法,这些推理方法的基本策略就是搜索,即通过搜索规则树来列举逻辑路径,路径列举定义推理过程。路径列举的复杂性随存储的规则树非线性增加,在大规模规则树中,实时路径列举会引起组合爆炸。而由于ann的知识处理与知识存储合二为一的特点,因而在问题求解过程中具有并行、分布处理、高速、高可靠性等特点,特别是在解决象模式识别这一类问题时,更显示出它的优越性。结果解释就是将内码表示的问题的解,还原成用户可接受的形式,由于传统ai中的每一个符号都代表一个确定的概念或规则,因此传统ai可给出清晰的可理解的结果解释,而ann却没有能力来解释自己的推理过程和求解结果。由此可见,传统ai从宏观角度开展认知模拟,可以部分的模拟人类的逻辑思维过程,而ann从微观方面进行认知模拟,可以部分的模拟人类的形象思维过程,各有优点和局限。
总的来说,传统ai的主要优点是可以做显示推理,特点是只能作精确推理,以及事先可对局部评价进行精确转化为条件的近似推理,存在着不确定知识获取困难,以及问题求解过程中的组合爆炸问题;ann的组合优点是可以采用简单的结构,表达非确定世界中的实体,其局限性在于目前只适合于解决小规模的问题。显然,传统的ai和ann在实现人工认知模拟方面是互补的,二者在精确与不精确、结构与非结构、高层与底层知识处理方面是相辅相成的。
如何将认知模拟用于构建智能化虚拟实验室并不是一个简单过程,实验过程仪器操作的多途径与前后次序的不确定性,不但可能造成实时路径列举引起的组合爆炸,也可能造成判断失误,因此采用传统ai与ann的综合技术更有利于智能化的实现,而对于初学者的智能化指导,采用基于传统ai的专家系统较为可行,而根据实验过程对实验者的能力综合评价,采用ann与模糊技术,则可能更为有效。我们在构建的化学及仪器分析虚拟实验室的过程中,综合运用理这两种方法的原理与技术,使其初步具备智能化特征。
二、虚拟实验室的实现方法与技术
虚拟实验室的实现应有多种途径,但无论如何实现,虚拟实验室应具备一些基本特征:①与现实的一致性(或现实的延伸);②高度交互性;③实施的信息反馈。虚拟实验室的实现,归根结底在于将设计思想转变为软件的编制。大型、复杂仪器的模拟往往使初学者无从下手,采取分解组合方法无疑是一种行之有效的捷径。
1.虚拟仪器的组件构造方法
虚拟实验室是由各种虚拟仪器组成,虚拟仪器又有具有特定功能的元件组成。建造各种具有特种功能的元件,并确定相互之间的关系,将成为关键。这种分解组合的方式,利用vb来建立具有很大的方便性,vb的模块化控件、事件驱动、面向对象、多线程特性满足了建立虚拟仪器的各种需要。可以利用vb的各种控件,来建立各种虚拟仪器的组件,例如:将旋钮图片(或编程绘制)放在vb的图片或图像控件上,通过设置控件的属性来控制旋钮的外形尺寸和位置,而通过对控件各种事件的编程,可建立与其它组件之间的关系及所应具有的功能。但构造过程中通常需要构建大量具有相同或相似功能的组件,重复构造不仅效率低,也使问题复杂。
2.用activex控制构造虚拟仪器的标准组件
activex技术为我们引入了“软件组件”这个新的概念,不必再将电脑软件编写成一个大型完整且独立运行的工具。为了能使软件完成更大更复杂的任务,现在可将它分割成小的模块,这种模块便是组件。各组件的宗旨便是完成特定的任务,而且组件能够跨运用程序、跨平台、跨网络运行。采用组件思想为构造虚拟仪器带来了很大方便。
简单地说,activex是一种体系结构,它允许使用不同编程语言开发的软件组件在网络环境中相互操作。activex体系结构使用了microsoft的组件对象模型及分布式组件对象模型标准,允许不同组件对象实现本地相互对话及网络上对象之间通信。activex这种重复使用和自包含的本质来源于微软更早的面向对象的应用程序设计思想,也就是由原来的ole控制,或ocx控件而发展成为现在能够运行在web页面上的软件组件,使得创建的运用程序能供客户端下载运行。
由于activex是一种开放的技术,开发者可以创建自己的activex控件,activex控件是程序的自包含片断或独立的组件,不但可以在程序中重复调用,也可以调入其它应用程序而成为其一部分。比如我们可以在vb中使用activex技术,开发出各种常见的参数调节旋钮、数字显示屏等通用activex控件(如称为旋钮控件和现实控件)。这样可以在构造不同仪器中反复使用,不但可以由控件组成仪器,还可以由小仪器组成复杂的大仪器。在我们利用vb5.0所研制的仪器分析虚拟实验室中,即采用了activex技术。
activex控件的开发工具有vb5.0,vc++,delphi等,在vb中建立自己的activex控件最为简单,他保留了人们熟悉的属性、事件和方法,通过在程序设计和运行时修改程序的属性、调用控件、在控件的事件中加入程序代码即可方便的组建运用程序。activex技术为虚拟实验室的建立带来了极大的便利。
三、vb5.0应用中的一些技巧
vb的面向对象、多线程、可视化、集成开发环境,特别适合于虚拟仪器的开发,api函数调用与activex技术,又使vb如虎添翼,作者利用vb5.0研究开发了气相色谱仪,原子吸收分光光度仪,紫外可见分光光度计,电位分析仪,分析天平等六种分析仪器和化学滴定分析实验平台,由此组建了基础仪器分析和化学分析两个完整的虚拟实验室,可进行仪器仿真模拟操作,分析过程实时模拟,数据处理,实验者综合能力评价等多种功能,已在多所高校推广使用,收到了较好效果。在此结合开发经验,介绍一些vb5.0的使用技巧。
1.api函数的调用
api是microsoft windows提供和使用的数以千计的应用程序编程接口函数,通过调用api函数,可以使你的应用程序获得系统信息,增强功能。api函数的语法结构比较复杂,往往使人望而生畏,但实际在vb中调用api函数非常方便。通过api viewer(通过开始菜单/vb5.0/api text viewer启动)你可以装入并浏览文本api文件,选定某一函数后,可将其拷贝到剪贴板上,再粘贴到vb应用程序中,例如通过调用api,我们可以利用下面的小程序来检测系统当前拥有的所有驱动器类型。
option explicit
const drive_removable=2,const drive_fixed=3
const drive_remote=4,const drive_cdrom=5
const drive_ramdisk=6
private declare function getdrivetypea lib ”kernel32” alias
” getdrivetypea”(byval ndrive as string ) as long
dim i, drv, d$
for i=0 to 25 ’all possible drives a to z
d$=chr$(i+65) & ” : ”
drv = getdrivetype(d$)
select case drv
case drive_removable
print “drive” & d$ & “ is removable.”
case drive_ fixed
print “drive” & d$ & “ is remote.”
case drive_ cdrom
print “drive” & d$ & “ is cd-rom.”
case drive_ ramdisk
print “drive” & d$ & “ is ram disk.”
case else
next i
end select
end sub
2.鼠标位置的自动显示
在虚拟仪器操作中,你可能需要随时确定鼠标的位置,可通过下列小程序实现。当程序运行时,在窗体任意位置点击鼠标, 显示点击处坐标.
private sub form_mousedown(button as integer, shift as integer, x as single, y as single)
labelx.caption=x
labely.caption=y
end sub
3.在两个容器之间移动控件
在vb中,各种控件都需要放置在容器上,如窗体、图片框、框架等都可作为容器使用。在同一容器内移动控件十分容易,但如何实现将控件由一个容器移动到另一个容器,一般书籍中都未见介绍,这需要巧妙的技巧,也有助于产生一些有创造性的编程技术。在一个空白窗体上,建立两个frame控件,命名为fl和fr,再在fl上放置一个命令按钮,命名为cl。将下列代码添加到cj的单击事件中,运行程序,点击cl,命令按钮将从左边fl跳到右边fr上。
private sub cl-click( )
set cl.container=fr
end sub
四、结束语
当人们努力在二维世界为创建虚拟仪器和虚拟实验室而努力探索时,vrml(virtual reality modeling language虚拟现实语言)又为人们开创了一个三维立体的可以让访问者如身临其境的真实空间。可以设想,在不同地点,多人同时进入一个虚拟的三维立体实验室,在电子导师的指导下,相互交谈学习的虚拟场景,将展现在人们的面前。
北京金国道有限公司 版权所有(c)1999 - 2002