Prolog 语言在采矿方法选择设计中的应用.pdf
文章编号100457162003028103中图分类号TD802 文献标识码A 矿业工程 Prolog语言在采矿方法选择设计中的应用 李 明,陈广平 北京科技大学,北京100083 摘 要针对目前采矿方法选择设计的缺陷,根据人工智能语言Prolog的特点,提出利用Prolog进行计算机编程,从而实 现采矿方法选择设计的智能化。 关键词采矿方法;Prolog语言;规则;事实;知识;回溯 1 问题的提出 地下采矿方法的选择,历来是矿山设计和生产中必须解决 的一个重要课题,它直接关系到建设项目投资效果的优劣和矿 山企业经济效益的好坏,因此,该课题的研究一直为矿业工作者 所关注。 数十年来,国内外学者对采矿方法的选择理论进行了大量 的有益的探索,并取得了较大的进展。从目前发表的文献看,地 下采矿方法的选择除了采用传统的方案法以外,还有相容分值 法、 德尔斐法、 价值工程法、 多目标规划法、 模糊数学法、 专家系统 法、 人工神经网络法等,由于各种方法的立足点不同,因而使用的 范围也都各有差异[1]。而采用上述各方法,每一次选择计算一般 只能得出一个结果,要想同时得出几种结果以供优化选择,就必 须选择计算几次,不但工作量很大,而且选择过程的合理性往往 要在选择过程结束后才能反映出来。目前所使用的计算机辅助 设计,虽然能够部分的减轻设计人员的劳动工作量,但是其和人 工设计过程基本一样,设计过程中大量繁重的工作还是需要人 来完成。而且,根据过程式计算机程序查找方案,反而失去了人 通过视觉筛选方案的能力,所以在这种设计计算中根本显示不 出计算机的优越性。这一缺点主要是由于计算机只会做程式化 工作的特性所致,同时在很大程度上也与使用的程序设计语言 的结构性有关。 PrologProgramming in logic语言,给我们提供了解决上述问 题的可能性。它不但具有一般科学计算的功能,而且更主要的是 它具有强大的演绎推理的能力。能利用在程序中给出的事实和 规则一般是有限的 , 找出满足给定目标即已知条件、 优化条 件的所有方案。假如满足条件的某一方案用事实表示有两种 或三种可能的选择,那么Prolog先选取第一种可能,用它完成以 后的一系列操作[2];而后,依靠自动回溯功能选取第二种可能再 去完成以后的一系列操作,从而求出满足条件的所有答案。利用 这种方法再配合计算机辅助设计绘图进行采矿方法的选择设 计就可以大大减少设计人员的工作量。 2 Prolog语言特点概述 Prolog语言是以一阶谓词逻辑为基础的逻辑程序设计语言, 是人工智能程序设计语言族中应用最为广泛的一种语言[5]。最 初的Prolog语言是解释型的,因为它运行速度慢,又难以扩充,后 来发展为Turbo Prolog ,成为一种纯编译型语言。这种Prolog运行 速度快,且具有窗口和图形处理能力,提供了丰富的内部谓词,所 以给程序设计带来了很大方便。由于Prolog的描述功能强,具有 强大的逻辑推理能力,并且语法简单,使用方便,使得它在人工智 能的许多研究领域,诸如动态关系数据库、 定理自动证明、 智能问 题求解、 符号方程求解、 规则生成、 计算机辅助设计、 编译程序的 构造、 自然语言理解、 专家系统和专家系统工具等方面都得到了 广泛的应用。自从1981年日本宣布第五代计算机的研制以Pro2 log为其核心语言以来,对Prolog的研究在许多国家受到重视,成 为最受重视的人工智能语言。 3 Prolog语言的独特点 Prolog语言与过程式程序设计语言不同[8],其独特之处表现 在以下几方面 1 Prolog语言是一种典型的逻辑程序设计语言。 20世纪60年代末,N. Wirth教授在瑞士苏黎世联邦工业大学 创立了PASCAL程序设计语言,并提出了一个著名的公式程序 算法数据结构。后来, K owalski提出了逻辑程序设计的思 想,指出算法逻辑控制。Prolog语言首先实现了K owalski的 逻辑控制的思想,它完全由R规则控制,是一种典型的逻辑程 序设计语言。 2 Prolog语言最显著的特点是它是一种描述性语言。 与通常的程序设计语言FORTRAN、PASCAL完全不同。 FORTRAN、PASCAL等求解问题时需要我们指明一系列的要让计 算机执行的计算步骤,即告诉计算机如何做How to do。而Pro2 log语言在求解问题时根据对问题的形式描述,利用己知事实和 规则,使用演绎推理自动进行求解,我们只需告诉计算机要做什 么What to do ,至于怎么做,却不需要我们关心,是系统自己的 事情。 3 Prolog程序在构成形式上不同于过程式语言。 一个完整的Prolog程序,由domains域说明,用以说明域类 型、Predicates谓词说明,由谓词名和域对象组成,如Likes〈per2 son ,actiVity〉、clauses子句,用以陈述已知事实和规则和 goal 目 标,用于描述要求解的问题等四个部分构成。以下是一个完整 的Prolog程序举例 domains person ,thing symbol predicates 总第81期 2003年第2期 西部探矿工程 WEST- CHINA EXPLORATION ENGINEERING series No.81 Feb. 2003 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved. likesperson ,thing clauses likesmary ,camera。 likesjohn ,computer。 likestom ,computer。 likeskathy ,x if likestom ,x goal likeskathy ,computer 该程序的子句段包含了一组三条事实和一个规则,程序运 行结果为True。 4事实和规则是Prolog程序最基本的构成部分。 ① 事实用来说明有关对象及对象之间的相互关系,其一般 格式为 关系对象,⋯,对象如 studentjane Jane 是学生 playjane ,mary ,chess Jane 和Mary下棋 ② 规则是关于客体及其关系的一般陈述,表明一些关系的 成立要依赖于其他一些关系的成立。其一般格式为 关系对象,⋯,对象 关系对象,⋯ 对象 AND⋯AND关 系对象,⋯,对象。其中AND也可用逗号 “,” 表示,连接符号 “ ” 表示 “如果” 相当于 “if”,例如 birdx animalx ,hasx ,feather . 有羽毛的动物是鸟 sister - ofx ,y femalex ,parentx ,u ,v ,parenty ,u ,v 如 果一位女性与另一个人有共同的父母,那么她是另一个人的姐 妹 ③ 同一规则中相同的变元意义相同,不同规则中的变元各 自独立。即Prolog中的变量都是局部变量,任何一个变量离开了 它所在的子句就没有任何意义。 ④ 目标是Prolog程序对问题的求解。目标中变量表示某个 客体,我们可以这样来理解它与事实和规则的关系当把事实和 规则看作公理时,目标就是待证的命题;把事实和规则看作数据 时,目标就是数据查询语句;把事实和规则看作状态和状态变化 规律时,目标就是目标状态的生成。这可使其能够在非常广泛的 领域里得到应用。 5 Prolog完全依靠匹配、 回溯来进行搜索,其求解过程是一 个寻求否证的消解过程。Prolog程序的执行方式,主要是能够实 现自动搜索、 自动模式匹配和回溯,把人工智能系统中最基本的 操作和实现技术加入了Prolog系统内部,从而大大简化了求解问 题的表达。 Prolog程序的求解过程,可以看成是问题求解空间的搜索过 程一般采用深度优先策略。系统根据用户给出的目标,利用已 知事实和规则,自动进行搜索、 查找、 判断和推理,最后回答用户 提出的问题。Prolog的顺序求解一旦开始,就一直执行到得到解 成功或失败为止。 Prolog提供的迫使回溯的标准谓词 “fair” 和阻止回溯的截断 元素 “”,使我们可以有效地控制程序的执行,灵活地改进或加速 搜索和回溯的过程,避免徒劳搜索,从而避免 “组合爆炸” 的后果, 提高程序的执行效率。 6 Prolog程序的子句和目标都以谓词的形式描写。 Prolog的这一特点决定了它对问题的求解只有两种方式 ① 判断一个事实的真或假。 当求解问题的目标中不含变量时,系统依据子句提供的事 实和规则得出True或False的结论。例如 clauses likesmary ,tennis . likestom ,baseball . likesbill ,x if likestom ,x . 当目标为likesbill ,baseball时,系统回答True. 当目标为likesmary ,baseball时,系统回答False. ② 利用已知事实和规则进行推理,求得结果。 当目标中含有变量时,系统将依据子句提供的事实和规则找出 所有满意的解。如 clause pupilpeter ,9 . pupilpaul ,10 . pupilmary ,9 . pupiljohn ,9 . 如果我们想安排一次班级9岁同学间的乒乓球赛,每对运动 员赛2场,则目标为pupil p1 ,9 ,pupil p2 ,9 ,pl p2 ,程序执 行结果为 p1 peter , p2 mary p1 peter ,p2 john p1 mary ,p2 peter p1 mary ,p2 john p1 john ,p2 peter p1 john ,p2 mary 4 程序设计中需注意的问题 为了提高Prolog程序的运行效率,在设计程序中需注意以下 问题。 1由于Prolog内部处理是采用搜索数据库,自动进行模式 匹配和回溯的方式,所以数据库中子句的排列对于求解速度有 一定的影响,因此要根据具体问题对子句进行适当排序以提高 运行效率[6]。 2由于许多程序都是递归性的,回溯要在程序的适当地方 加入切断,以避免出现重复循环,以节省运行的时间和空间。 3要根据具体问题选择合适的数据结构,由于数据结构不 同其处理方式也不同,因此这会影响运行效率[6]。 5 Prolog语言在采矿方法选择设计中的应用 现代矿山是包括多种科学技术的综合性企业,有着比较复 杂的技术活动。要取得好的经济效益,必须对各个技术、 管理环 节进行科学的计划、 设计、 组织和决策。要做到这些,不仅需要完 备的技术资料、 先进的技术设备,而且需要具有丰富实践经验的 工程技术人员、 管理专家。这后一点正是我国多数矿山所缺少 的,由于利用Prolog在进行采矿方法选择时就是根据知识库中的 事实和规则进行推理获得,而事实和规则主要来自于专家和工 程技术人员的经验,而且它还可以对专家的能力进行延伸、 扩展, 并且可以不受时间和空间的限制,高效率的准确无误的工作。 该系统以Prolog语言为核心,结合数据库编程技术和Auto CAD以及其它辅助手段建立了一个专门系统,用于采矿方法的 选择设计。使计算机技术在采矿方法选择设计中的应用更加贴 近于人类思维,使人机交互更加自然顺畅,减轻了采矿工程师的 繁重的设计工作量。 28 西 部 探 矿 工 程 Feb. 2003 No.2 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved. 1系统的结构。系统主要由知识库和推理机两部分构成。 为了能实际应用,该系统还有人机对话部分和知识解释、 综合数 据库等配套部分。其基本结构见图1所示。 图1 系统的基本结构 ① 知识库。知识库用于存放采矿专家提供的专门知识。主 要包括采矿专业的基础理论知识及相关的学科知识;通过调研 收集的专家知识,即专家在长期工程实践中积累的应对复杂技 术问题的经验、 措施等。知识库的完善与否、 知识的数量与质量 决定该系统的优劣。 ② 推理机。推理机的作用是使知识库的知识得到充分、 合 理、 有效地利用,使各个组成部分构成一个统一的协调一致的有 机整体。本系统对诸如计算之类或前提条件较少的问题采用正 向推理;对涉及条件或输入数据较多的问题采用反向推理;对涉 及的知识较多且很复杂的目标,可将目标分解为多个子目标,然 后采用混合推理来解决。采用这种联合的推理方式可以提高系 统求解的效率,使求解更加准确有效。 ③ 解释机制。该子系统负责回答用户提出的各种问题,它是 实现系统透明性的一个重要组件。 ④ 人机接口。为了方便使用,该系统还为用户提供用户熟悉 的表示信息的手段如自然语言、 图形、 表格等。人机接口负责把 用户输入的信息转换成系统的内部表示形式,然后交给相应部 件去处理。系统输出的内部信息也由人机接口转换成用户易于 理解的外部表示形式显示给用户。本系统使用自然语言作为人 机交流信息的媒体。 2系统的开发工具。本系统采用Turbo Prolog ,它对系统内 存要求少,具有菜单交互式程序环境和多窗口功能;具有丰富的 内部谓词,及对窗口、 图形和声音进行管理的能力;能实现动态数 据库,并具有一定的数学计算能力。还有一个突出的优点是它能 和C、FORTRAN及汇编语言等实现接口,其语言形式较接近于自 然语言的表达方式,具有自动模式匹配和回溯功能,不必在控制 推理方面花很大精力。 3系统的实现。该系统涉及许多环节,每个环节通过设计 一个子模块来实现,各个子模块组合起来构成整个系统。整个系 统主要是由Turbo Prolog来实现[9]。其中图形模块由图形生成和 编辑模块构成。本模块是通过Prolog和Auto CAD的一个接口程 序来完成,首先由接口程序生成图形数据文件后再由Auto CAD 生成图形,图形编辑则对生成的图形进行二次编辑和修改。 总之,采用Turbo Prolog和Auto CAD[10]来完成系统的主要功 能,可以充分发挥Prolog语言在逻辑推理和窗口处理方面的优 势。系统运行速度快、 结构合理、 性能优良,且全部采用下拉菜 单、 弹出菜单和对话框,操作简单,便于学习和使用。又系统采用 了模块化编程,各模块之间具有最大限度的独立性,这样,整个系 统便于修改和扩充,可使系统成为一个开放的系统[7]。 6 结束语 采矿方法的选择设计是地下矿山生产技术环节的一个重要 组成部分,其设计质量和速度直接影响着矿山企业的经济效益。 目前,我国绝大部分矿山都采用常规的方法进行采矿方法的选 择设计,其设计计算繁琐,图纸处理工作量大,手工设计周期长, 一般难以获得满意的效果。 Prolog语言的表达能力很强,能够进行抽象的设计描述;Pro2 log语言的灵活性和推理技术,使得在设计行为或结构信息不完 全的情况下也能很好的完成任务。如果充分利用Prolog语言的 跟踪机制,还可向用户解释为什么这样推断或如何推断。当然 Prolog语言也存在某些不足,若缺乏用户指定的控制可能会导致 推理效率下降等。 总之,利用人工智能语言Prolog ,在计算机的帮助下,把大量 繁琐的计算、 绘图、 推理过程留给电脑来完成,能够真正实现 “人 机交互”,大大减轻了工程技术人员的繁重体力与脑力劳动,从而 达到彻底 “解放” 人类的目的。 参考文献 [1] 刘华生,王洪海 1 采矿方法优选的灰色局势决策法[J ]1 有色矿山, 199451 [2] 徐彦欣等 1Prolog语言在机械设计选型问题中的应用[J ]1 机械科学 技术,1998111 [3] 祖建华,胡乃联,韩福娥等 1 动态构件式采矿方法设计选择系统[J ] 1 金属矿山,199441 [4] 欧阳一鸣1 基于Prolog语言的数字电路逻辑模拟[J ]1 计算机工程与 应用,1999121 [5] 白晓虹等 1Prolog语言特点综述[J ]1 延安大学学报,199931 [6] 沙胜贤,康顺哲等 1Prolog语言的特点及其编程技术[J ]1 长春光学 精密机械学院学报,1999 ,31 [7] 刘武皓,赵洪波 1 矿山开采专家系统研究[J ]1 黄金,199931 [8] 周立柱 1Prolog逻辑程序设计及应用[M]1 清华大学出版社,19911 [9] 余金山1Turbo Prolog程序开发中数据描述的一种方法[J ]1 计算机应 用,1994 ,11 [10] 陶树平,罗叶兴1 智能CAD系统实现途径的研究[J ]1 计算机工程, 1994 ,51 [11] 陈兆乾,潘金贵等 1Turbo2Prolog程序设计[M]1 南京大学出版社, 19891 [12] 王士同等 1 人工智能教程[M]1 电子工业出版社,20011 Application of Prolog Language in Selection and Desing of Mining s LI Ming , CHEN Guang2ping Beijing University of Science and Technology, Beijing100083 ,China Abstract Prolong language is applied for computer programming of ntelligent se2 lection and desing of mining in terms of the disadvantage of the present se2 lection and design of mining . K ey words mining ; Prolog language ; rule ; facts; knowledge ; recalling 38 2003年 第2期 李 明,陈广平Prolog语言在采矿方法选择设计中的应用 1995-2004 Tsinghua Tongfang Optical Disc Co., Ltd. All rights reserved.