自然约束语言
2009-7
科学出版社
周建阳
236
无
设计一门接近人类的基础推理、以常规数理逻辑为语法的问题求解语言是可行的,这一目标可以通过结合人丁智能(Artificial Intel gence)、运筹学(OperationsResearCh)和逻辑规划(Logic Programming)技术来实现。本书为读者介绍自然约束语言(Natural Constraint Language,NCL)及其软件平台POEM (programming in Operationand Expressive Models)。NCL使问题建模及求解近乎自然,提供给用户一门学习快捷、使用简便、以自然简洁的方法求解组合问题的计算机语言。 作者在1995年博士学习阶段开始构思研发NCL,设计思想相当简单,使用TEX作为元语言来描述组合问题并用NCL解算器进行问题求解。简而言之,NCL是一门支持智能语法(上下文相关语法)的、求解约束满足问题的描述型语言,支持隐式类型的声明、进行全局的语义分析、基于上下文的推理及求解。NCL将数值约束、简化的一阶逻辑及集合推理集成在一个语言环境之下,形成一个在混合域(实数、整数、布尔值、索引及集合)上针对约束满足问题的联合求解系统。因此,NCL具有独特的编程风格:①自然建模;②混合集合规划。 NCL的语言原型于1997年12月提交给第三届国际系统科学和系统工程会议(Zhou,1998),并于1998年3月正式提交给逻辑规划协会的官方杂志厂The journal ofLogic programming (Zhou,2000)。 迄今为止,本书介绍的:NCL距NCL的原型已十年有余。NCL从最初几万行的C++代码发展到现今的30余万行,技术趋于成熟。产品POEM的总体代码量也已突破70万行的C++代码,成为一个大型的、支持工程化开发优化方案的基础型软件。NCL朝着“将数理逻辑产业化”的目标前进了一步。
本书介绍自然约束语言NCL及其开发平台POEM。全书共6章,其中第1章简要介绍NCL语言与求解系统;第2章和第3章介绍NCL语言的基本体系和原理方法,内容包括NCL的词法、语法及语义等;第4章介绍NCL语言的开发平台POEM的使用方法;第5章介绍如何用NCL语言进行建模及求解;第6章介绍NCL语言在工业优化中的部分应用。 本书可作为高等院校及科研院所研究运筹学、物流优化、人工智能和软件方向的教师和研究生的科研参考书。针对如何用NCL语言及其开发平台POEM求解运筹学组合优化问题,本书可作为企事业单位中从事生产制造、物流信息化、人力资源优化等工作的IT人员研究计划、排程与优化的指导书,也可以作为POEM软件平台配套的参考手册。
前言第1章 NCL与求解系统 1.1 求解系统 解算器(SOLVER) 语法分析器(PARSER) 规则(RULES) 1.2 NCL语言简介 自然建模(NATURAL MODELING) 混合集合规划(MIXED SET PROGRAMMING) 求解规则(SEARCH RULES) NCL是联合求解系统 1.3 基于NCL的POEM平台第2章 NCL的词法 2.1 常规词法 字符 标识符 特殊标识符 常量 未确定值 注释 2.2数学编码 数学符号一览表 函数一览表 TEX聚合符 2.3 数据类型 广义数据类型 逻辑推理的数据精度 集合类型 日期/时间类型 缺省值 数据示例第3章 NCL的语法及语义 3.1 NCL的常规逻辑 语句(STATEMENT) 量词(QUANTIFICATION) 索引(INDEX) 条件句(CONDITIONAL) 约束(CONSTRAINT) 表达式(EXPRESSION) 浮点数表达式(FLOAT EXPRESSION) 整数表达式(INTEGER EXPRESSION) 字符串(STRING) 逻辑指针(REFERENCE) 集合表达式(SET EXPRESSION) 布尔表达式(BOOLEAN EXPRESSION) 聚合式(AGGREGATION) 常量(CONSTANT) 输入/输出的格式(INPUTAND OUTPUT FORMAT) 日期/时间格式(DATE/TIME FORMAT) 日期/时间的属性函数(DATE/TIME ATTRIBUTE) 变量(VARIABLE) 匿名变量(ANONYMOUS VARIABLE) 连缀(CONCATENATION) 个性化消(CUSTOM MESSAGE) 软约束(SOFT CONSTRAINT) 数据源(DATA POOL) 输入/输出的指定(I/O SPECIFICATION) 输出(PRINT) 宏调用(INCLUDE)3.2 NCL的时态逻辑 系统变量(SYSTEM VARIABLE) 抽取(EXTRACTION) 赋值(ASSIGNMENT) 跳转(GOTO) 子模型(SUB MODEL) SQL语言接口 操作系统的OS命令(OS COMMAND) 期待约束(EXPECTATION CONSTRAINT)3.3 NCL的求解逻辑 切削与搜索(CUTAND SEARCH) 查询与搜索(QUERYAND SEARCH) 枚举方式(ENUMERATION MODE) 查询准则(QUERY CRITERIA) 优化目标(OPTIMIZATION OBJECTIVE) 求解过程的示范 对求解的系统控制 3.4 消息与跟踪管理 NCL消息(NCL MESSAGE) 终止状态(TERMINATION STATUS) 可编程的暂停(PROGRAMMED BREAK) 可编程的调试(PROGRAMMED DEBUGGING) 消息处理器(MESSAGE HANDLER) 3.5 NCL的语法范例 布尔逻辑(BOOLEAN LOGIC) 无穷大(INFINITY) 数值约束(NUMERIC CONSTRAINTS) 集合推理(SET REASONING) 量词(QUANTIFICATION) 混合集合规划示例(MIXED SET PROGRAM) 分支(SWITCH) 规则(RULE) 优化目标(OPTIMIZATION OBJECTIVE) 输入,输出机制(I/O FACILITIES) 查询及搜索(QUERY AND SEARCH) 跳转(GOTO) 聚合(AGGREGATION) 用作下标的指针(REFERENCE SUBSCRIPTS) 被引用的运算式(REFERENCED OPERATORS) 连缀(CONCATENATION) 日期/时间的管理(DATE/TIME MANAGEMENT) 抽取及时态逻辑(EXTRACTION AND TEMPORALLOGIC) 赋值(ASSIGNMENT) 子字符串及集合的元素(SUBSTRING AND ELEMENTS FROM SET) 获取集合的分段区间(OBTAINING PIECEWISE INTERVALS FROMA SET) 个性化消息(CUSTOM MESSAGE) 内存缓冲区数据源(BUFFER POOL) 存储于文件的子模型(SUB MODEL IN A FILE) 存储于内存缓冲区的子模型(SUB MODEL IN A BUFFER PooL) 子模型的返回值(RETURN VALUES oFA SUB MODEL) 嵌套调用(NESTED CALL) 子模型调用溢出(OvERFLoW INA SUB MODEL CALL) 数据库连接及SQL查询(DATABASECONNECTIONAND SQL QLTERY) 操作系统OS命令(OS COMMAND) 匿名变量及缺省值(ANONYMOUS VARlABLES AND DEFAULT VALUES) 系统变量(SYSTEM VARIABLE) 软约束(SOFIT CONSTRAINT) 用期待约束进行程序调试(PROGRAMMED DEBLIGGING WITH EXPEC TATION CONSTRAINTT第4章 NCL语言的开发平台POEM@ 4.1 POEM的主界面 工具栏(TooL BAR) TEX符号栏 工作区(WORKSPACE) 编辑窗(EDIT WINDOW) 跟踪窗(TRACE WINDOW) 4.2 项目配置 NCL的数据源 NCL的参数配置 项目配置窗 4.3 模型夹及模型库 模型夹(MODEL FoLDER) NCL模型库(MODELLIBRARY) 4.4 信息表 现行模型表(RUNNING MODELS) 常量表(CONSTANTS) 变量表(VARIABLES) 约束表(CONSTRAINTS) 4.5 视图及调试 快捷查视(QUICK WATCH) 浏览器(BROWSER) 约束调试器(CONSTRAINT DEBtIGGER) 可视化调试器(VISUAL DEBUGGER) 结果可视化窗(SoLUTION VIEWER) 4.6 跟踪窗与工作模式 调试模式(DEBUG MODE) 计时模式(TIMER MODE) 跟踪级别(TRACE LEVEL) 诊断信息的选项窗 统计信息的选项窗 推荐的模型诊断模式 推荐的正常工作模式 4.7 在线帮助第5章 建模及求解 5.1 工程化建模 建模步骤 变量的命名公约 主动式模型改进 被动式模型改进 5.2 NCL的模型抽象 两两不等的整数(DISTINCT INTEGERS) 两两不交的集合(DISJOINT SETS) 排序(SORTING) 集合的覆盖与划分(SET COVERING AND PARTITIONING) 拼排(PACKING) 有限能力(FINITE CAPACITY) 求和(SUM) 二维累积(CUMULATION) 5.3 智力游戏(PIJZZlLES) 字谜(SEND MORE MONEY) 素数问题(PRIMES) 整数排序(INTEGER SORTING) 皇后问题(QUEENS) 神奇的方块(MAGIC SQUARE) 数独(SUDOKU) 神奇的序列(MAGIC SEQUENCE) 爱因斯坦的游戏题(EINSTEIN'S QUIz) 数谜(CALCULS D'ENFER) 方块拼排(SQUIARE PACKING) 骑士问题(KNIGHT) 5.4 求解复杂问题 集合划分(SET PARTITIONING) 高尔夫球对抗赛(GOLF TOURNAMENT) 赛舟会(PROGRESSIVE PARTY) 货船装载(SHIP LOADING) 车间排序(JoB-SHOP SCHEDULING) 最小化热能转换器的能耗(MINIMIZINGTHECOST OFA HEATEXCHANGER) 带时间窗的取货与送货(PICKUP AND DEIJIVERY WITH TIME WINDOWS) 练习题 5.5 松弛逻辑与二次优化 交互逻辑(INTERACTION LOGIC) 迭代优化(ITERATIVE OPTIMIZATION) 旅行商问题的迭代优化方法(ITERATIVE OPTIMIZATION FOR TSP) TSP的练习题第6章 NCL的工业应用 6.1 生产排程 问题定义 数据逻辑 简化的优化模型 时间的可视化工具:甘特图(GANTT CHART) 练习题 6.2 人员排班计划 问题定义 数据逻辑 简化的优化模型 统计信息的可视化工具:直方图(HISTOGRAM) 练习题 6.3 多式联运优化 问题定义 数据逻辑 简化的优化模型 地理信息的可视化工具:地图(MAP) 练习题参考文献附录1 NCL语法的TEX编码附录2 ComPoem ACtiveX组件英文索引中文索引
第1章 NCL与求解系统 1.1 求解系统 约束满足问题(constraint satisfaction Problem)在日常生活与工作中无处不在,很多都属于NP困难(NP-hard)型。复杂性理论(complexity Theory)表明,除非P类问题等于NP类问题,一个问题如果是NP完备型(或NP困难型)则意味着不存在求解此问题的多项式时间的算法(Lenstra and Kan,1979)。 本书着重讨论针对约束满足问题的求解系统的三项关键技术:语法分析器(Parser)、解算器(S01ver)、规则(Rules)。之所以论述这三项技术,是因为它们分别涉及数学建模、解算及对求解的规范。以下先介绍求解系统最核心的解算器,再论述语法分析器及规则。 解算器(SoLvER) 解算器是求解系统的核心,一方面它是一个算法引擎,另一方面它是一个推理系统。本书着重介绍逻辑化、工业化的求解系统。 运筹学与线性规划 运筹学是系统研究经济、军事等活动中有关决策、管理的问题的一门科学。提到运筹学,就不免提到线性规划(Linear Programming)一一求解以线性函数为优化目标的线性约束系统的技术。 ……
无
为读者打开一个新的窗口。