《面向对象的模型生成与链接.pdf》由会员分享,可在线阅读,更多相关《面向对象的模型生成与链接.pdf(8页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第 2卷 第 2期 1 9 9 9年 6月 管理科学学报 J OURNAL OF MANAGEM ENT S CI ENCES I N CHI NA Vo1 2 No 2 J u n 1 9 9 9 面向对象的模型生成与链接 一(复糕院)(西 南 变 蔼 学 院)(复 旦 大 学 管 理 学 院)(西 南 交 通 大 学 经 济 管 理 学 院)【摘要】本 文用 S ma l l t a l k语 言 完成 了模 型的生成 与链接 首 先建立 了各 种基本原 子模 型类 如 线性规 划模型类、运输 模型类等,再 用原子模型类生成 实例 对象,从 而 产生各 种具体 的原子模 型 在通过模 型链
2、接组 建复合模 型时,提供 了一个复合模 型类 C o mmo d e l 来完成子模 型运 行、链接 等功能 最后,用实例进一 步说 明 了其使 用法,并证 明此方 法可 行和有独特 的优 点 关键词:塑 ,攫 整壅,盎 苤 立立 鼬,电血 堕 盔 篮 r r 分类号:C9 3 4 1h 弓 毫|3 f f D S S这 一概念于 7 O年代首 先 由 G o r r y和 Mo r t o n提 出,它是 以解决 半结 构化和非结构 化 问题 为 目 的,便于模 型和数据管理 的交 互式计算 机系统,用 以提供 有效 的决 策支持 在 D S S中,模型处 于十分重 要的地位 经过 近三十
3、年的研 究,模型 库管 理系 统随 D S S的发展有 了长足 的进 展,出现了各种模型表 示法 和 模型库管 理系统 但是,现有模型库管 理 系统 的模 型生成与 链接仍 不完善,如模 型的多样性,模 型与 方 法、模 型与数据 的特性匹配,模 型与数据 的独立性等 问题都有待进一步解决 面向对象分析 与设计技 术在 当今 比较盛行,经过近 些年 来的研 究应用,不管在理论上还是在技术上 都 已经 比较成熟,它在 系统分析、系统设计等 许多 方面都 已显示其成功之处 实践证 明,把 面向对象 的概 念和技术应用于模型管理 系统设计 非常适合,它 能有效解决模型管 理系统存在的许多 问题。1
4、模型抽象 模型是 以某种形式 对一个系统的本质属性的描述,以刻画系统的 功能、行 为及其变化 规律 人们 为 了有效管理、生成模 型和 科学描述 客观现实世 界,引入 了复 合模 型、子模型、原 子模型三个 范畴 复合 模 型 由多个子模型组成,而 子模型又 可分解成 几个更小的模型(子 子模 型)子模 型可以是原子模 型,也可 以是复合模 型 因此可以把模型分成两类:原子模型和复合模型 决策者利用模型输出信息以制定决策和控制过程进展,他们对结果及其运用效果感兴趣,但大都对 模 型工作原理了解不深或相对不感兴趣 从使用 角度来看,模 型也可视 为一个反映输入 与输 出关系的黑 盒,如图 1(a
5、)所示 也就是说可把模型 比喻成 一块 集成 电路,用户只要 对集成 电路的引脚 和功能 了解 清楚就 能应用,而其 内部结构 的设 计和生产则 由集成 电路 的设 计者和生产 厂家 来完 成 为此 模 型可 抽 林杰:博士 通讯地 址;上海复 旦大学管 理学 院管 理科 学系,邮编:2 0 0 4 3 3 本文 1 9 9 8 年 1 月 1 9 It 收到 一 维普资讯 http:/ 管理科学学报 象成:外部封装(输入、输 出变量)与由知识工 程师完成 的内部 结构,如 图 1(b)所 示;同时,为模型的正确 使 用与管理,还 需要 配备 模型说 明字典(模型字典)这样就可把模 型视 为独
6、立对 象,按 面向对象的分析 与设计思想对其管理与操作 本文用Mo d e l 类来建立模型的外部封装与模型字典框架,用其子类各 种模型模扳类建立模型的 内部结构,用模型模板 生成的实例形成各种具体模型(本 文选 用 S ma l 1 t a l k 语 言进行分析)2 模型类 兰 誊 图 1 模型 外部 视图 犹如所 有的集成 电路 都有引脚、内部 结构 和使用说明一样,所 有模 型都 有外部封装、内部结构 及模 型字典 尽管模型的内部结构干差万别,但其外部封装、模型字典都有相似的结构 因此引出 Mo d e l 类,其属性和操作方法确定模型的输入、输出变量,输入数据的来源,输出数据的去处,
7、及建立模型字典框架 等 给 出 Mo d e l 类如下:Ob j e c t s u b c l a s s#Mod e l i n s t a n c e Va r i a b l e Na me s n a i 1 e i n p u t s t r e a m o u t s t r e a m i n p u t v a r i a b l e o u t v a r i a b l e i n d a t a t y p e o u t d a t a t y p e mo d e l d c t i o n a r y c l a s s Va r i a b l e Name
8、p o o l d i c t i o n a r i e s 其中 Ob j e c t为 S ma l h a l k中所有 类 的超类,Mode l 类 作为其子类 Mo d e l 的有名 实例 变量 有:n a me 存放 模 型名 i n p u t s t r e a m(输入流),指 明输入数据 来源(键盘、数据库文 件或 其它设备)o u t s t r e a m(输 出流),指 明输 出数据去 处(显示 器、磁盘文件或打 印机等)i n p u t v a r i a b l e(输 入变量集),存放模型的输 入变量;o u t v a r i a b l e(输 出变
9、量集),存放模型的输出变量;mo d e l d i e t i o n a r y(模型字典),是一个字典变 量,其键 和值 如表 1所示 i n d a t a t y p e,指 明输入数据格式 o u t d a t a t y p e,说明输 出数据格式 表 l 模 型字 典 对应的一些过程和方法(me t h o d s)有:n a me:a S t r i n g 把 a S t r i n g放 入 i a l T l e中,a S t r i n g是一个模 型名 称的字符 串 维普资讯 http:/ 第 2 期 林杰等:面向对 象 的模型 生成 与链接 i np ut s
10、t r e a m:a St r e a m 把一个流 a S t r e a m(输入路径或 设备)存放在接收者的输入流 i n p u t s t r e a m 中 o ut s t r e a m:a St r e a m 把一个流 a S t r e a m(输 出路经或设 备)存放在接收者的输出流 o u t s t r e a m 中 i n pu t v a r i a bl e:a Sy m b o l t 0:a v a ila bl e 把接 受者(模型)的输入端 a S y mb o l 定义成变量 a Va r i a b l e,并存放在输入变量 集 i n p u
11、 t v a r i a b l e中 a S y mb o l 为模型输入端编号(I ,I )a Va r i a b l e为模型输入变量 o u t p u t v a r i a b l e:a S y mb o I t o:a Va r i a b l e 把接受者(模型)的输 出端 a S y mb o l 定义成变 量 a Va r i a b l e 并存放在输 出变 量集 o u t v a r i a b l e中 a S y mb o l 为模 型输 出端编号(O O。),a Va r i a b l e为模型输 出变量 a t:a k e y p u t:a n Ob
12、j e c t 回答 a n O b j e c t 如果接收者(模型)的 mo d e l d i c t i o n a r y字典包含键 为 a k e y的键 值 对,则用 a n Ob j e c t 替换该键 值对 的值 否则增加 a k e y a n O b j e c t 对 r emove 把接 受者从模 型管理系统的模型 目录 库中删除,并删除代表模型的全局变量 接 受者 为一 模型模板实例 r e mo v e c l a s s;a n Ob j e c t 把模型模板 a n Ob j e c t 删除,如果此模板有实例模型,则报 告出错 此消息发给 a n Ob
13、j e c t的超 类 save 把接受者存放 到模型管理 系统 的模 型 目录库中去 接受者 为一个代表模型(模 型 模板实例)的全局变量 返 回接受 者的模型名,即把模型有名实例变量 n a me的值返 回 de l e t e a t:a Ke y 从 m。d e l d i c t i。n a r y中删除包 含键 a Ke y的键 值对,无此键报 告出错 3原子模型 3 1 原子模型模板 不同模型 的内部结构、操作方法、端点定义 各不相同,这 种差 异决 定了模型有不同的功能,本文采用 模型模 板来描 述这 种差异,即一 种模 型模板定 义了该模 型类独有 的数据结构、内部变量 运行
14、 方法 等 模型模板分为原子模型模 板、复合 模型模板 本节 只讨 论原子模型模板的建立 设某一分析领域 需要 建立 三类 模型(这里 不针对某一真实领域,只用来说 明建立方法):一般线性规 划 模型、运 输 问题 模 型、神 经 网络 模 型 为 三类 模 型 建立 三 个 模 型 模板:L i n e a r p r o(线性 规 划 模 板)、T r a n s p o r t a t i o n(运输 问题模板)、ANN(神经网络预测模型模板)建立类 结构图 2所示 运 输问题可用一般线性规 划的数学模型描述,也 可用其求解方 法求懈,如单纯形 法,因此 把运输 问题 模 型模 板作为
15、线性规划模 型模 板的子类,继 承其描述形式及求解 算法 同时 也在 自己范围 内建 立更 适台 自己的描述形式及求解算法,如表 上作 业法 等 神经 网络模型(ANN)无法继承一般线性 规划及其子类的描述及求 解方法 但 它也 有外部封 装及描 述字典,因此,ANN 为 Mo d e l 的子类 同时,在 其 内部建 立 自己的结构及相应算法完成 ANN 模板描述 维普资讯 http:/ 9 6 管理科学学报 圉 2 类结 构 下面 将建立一般 线性 规划 问题模 型模板 线 性规划 的数 学模 型表示如下:【n l a x(m in)一 i-1 妻 (:)良 l,2 ,t)j一1 l z,
16、0 J i,2 ,对类 L i n e a r p r o建 立以下有 名实例变 量:v a r my ar n,m a xo r m i nc s t r e a m,a s t r e a m,bs t r e a m_ xs t r e a m,c o ns t r a i nt,op e r a t i o ns 其 中 v a r lT l、y a r n分别存放 式(1)中 m、n的值 ma x o r mi n指 明 模 型为极大 或极 小化问题 c o n s t r a i n t 存放 各约束方程 的约束 条 件,可为“”、“一”、“”之一 c s t r e a m、a
17、s t r e a n l、b s t r e a m 分 别指 向存放 参数、4 、如的流,各流可 以指 向键 盘、数据 库文 件或其他 设 备 o p e r a t i o n s(一个 字典),其 存放 模 型 的可 用算 法(单纯形法、对偶单纯形法等)的名称及 存放 这些 算法 的路径和文件名 对 其建立类方法(c l a s s me t h o d e s):n ew 新建 立一个 L i n e a r p r o实例并初 始化 a d d o p e r a t i o n s:a n Ob j e e t a n d:a S t r e a m 向接受者 的算法字典 o p
18、 e r a t i o n s中加入算法 a n O b j e e t 和指向算法程序所在位置的路 径 a S t r e a m d e l e o pe r a t i o n s:a n Ob j e c t 把算法 a n Ob j e c t 从接受者的算法字典 中删除 实例方法(i n t a n e e me t h o d s):o p e r a t i o n s:a k e y 用键 a k e y的值所指算法完成对接受者运算 接受者 为一个一般线性规 划问题 a k e y 为算法字典 中的一个键,其值是算 法的路径和文件名 pu t m:a nl nt e g e
19、 r l a n dn:an l nt e ge r 2 把 a n l n t e g e r l、a n l n t e g e r 2分别置 于有名实例变量 v a r m、v a r n中 e s t r e a m:a St r e a m 把 a S t r e a m存放在 c s t r e a m 中,a S t r e a m 是读取参数 的路径及 文件 名 a s t r e a m:a St r e a m 把 a S t r e a m 存放在 a s t r e a m 中,a S t r e a m 是读取参数 的路径及 文件 名 3 2原子模型生成及使 用 下面
20、以一个实例介 绍原 子模 型的建立过程 设某厂生产 甲乙两种产品,已知制 成一 吨产 品甲需 用资源 A 3吨,资源 B 4 m;制 成 1吨产品 乙需 用资源 A 2 吨,资源 B 6 m,资源 c 7 个单位,一吨产品甲和乙的经济价值分别为 7 万元和 5万元,三种 资源的限制量分别 为 b 吨、m。、b 个单 位,试建立 一个 运算模 型:输入 为限制量 占 l、b。,输 出为生产 产品 甲、乙的产量,要 求使 总经济价值最高 维普资讯 http:/ 第 2期 林杰 等:面 向对象 的模 型生成 与链 接 生成和运行原子模型过程如下:定义一个线性规划模型变量 P r o d e c i
21、s i o n Pr o de e i s i o n:Li n e a r p r o n e w 给 P r o d e c i s i o n命名“生产决策”P r o d e e i s i o n f l a me:生产决策 确定模型的输入变量 P r o d e e i s i o n i n p u t a r i a b l e:I 1 t o:b L 确定模型的输 出变 量 P I o a e e i s i o n o u t p u t v a r i a b l e:0L t o:l P r o d e e i s i o n o u t p u t v a r i a
22、 b l e O2 t o:x 2 Pr o d e c l s i o n o u t p u t v a r i a b l e:03 t o:ma x z 建立模型字典内容 P r o d e c i s i o n a t:f u n c t f p u t:t h e s t r i n g“t h e s t r i n g为模型功能描述 字符 串”建立模型 r n、n的值、约束方程的约束条件等参数 P r o d e c i s i o n p u t m:2 a n d n:3 给 出各个参数存放 的路径或文件 P r o d e e i s i o n c s t r e a
23、 m:f i l e 1“文件 f i l e 1 存放参数 c:(3 2)”Pr o d e c Ni o n a s t r e a m:f i l e 2 r 3 2 I“文件 f i l e 2 存放参数 A=4 6 l L。测试模型 P r o d e c i s i o n 把 P r o d e e i s i o n存放到模型管理系统的模型 目录数据 库中 Pr o d e e i s i o n s a v e 调 用、运行模型 指 明模型输入数据 来源 确 定模型输 出文件及路径 运行 模型 4 复合模型 4 1 复合模型类 现实问题仅仅靠原子模型就能解决的并不多,往往需要
24、几个模型联合求解,这就要求模型管理系统 对模型的层次开发和重用提供支持 即把被验证是正确的求解模型不加修改就可以连续运行,作为积木 块构造功能更强太的求解模型 一 复合模型 复台模型的外部视图与原子模型相似,因此,可以定义复 台模 型类 C o mmo d e l 作 为 Mo d e l 的子类,定义如 下:M o d e l s u b c l a s s#Co mmo d e l i n s t a nc e Va r i a bl e N a me s l o gi c s t r ue t i n t e r f ae e 维普资讯 http:/ 9 8 管理科学学报 c l a s
25、 s Va fia bl e N a l n e:p o ol d i c t i o na r i e s:”对复合模型的 内部描述有两部分:逻辑部分和接 口部分 逻辑 部分存放 复合模型 中所有子模 型的 名称 及其运 行顺 序,接 口部 分 存放各 子模型 接 口连接 表 存放 逻辑部 分、接 口部分 的实 例变量 分别 为 l o g i c s t r u c t、i n t e r f a c e 1 o g i c s t r u c t 为 Ar r a y(数组)实例 i n t e r f a c e为 D i c t i o n a r y(字 典),其键 为模型名,值
26、为 一个 S e t(集 合),集合收集 了该 模型所有连接方式 C o mmo d e l 的类方法(c l a s s me t h o d s)n e w:a n I n t e g e r I o g i e s t r u c t:一 Ar r a y n e w:(a n I n t e g e r-1)l o g i c s t r u c t设 置为数组(Ar r a y)其 中存放 复合模 型 中有子模型 的数量 和子模 型的运行顺序 ”i n t e r f a c e:一 Di c t i o n a r y n e w:a n I n t e g e r“把 i n t
27、 e r f a c e设置为一个字典”lo g ic s t r u c t a t:1 p u t:a n l n t e g e r“数组的第一个元素为复合模型中子模型的数量”实例方法(i n s t a n c e me t h ods)l o gi c s t r u c t a t:a n I n t e g e r Pu t:a S t fin g a n I n t e g e r为大于 1但小于或等于复合模 型调用子模 型数量 的一个正整 数 a S t r i n g为一个模型 名 此方法把子模 型 a S ki n g放八 l o g i c s t r u c t 数组
28、 中,同时在 字典 i n t e r f a c e中建立 以模 型名 a s t r i n g为键的键 值对,值设 置成 一个 S e t 收集 注意:l o g i c s t r u c t中的先后顺 序对应复 合模型 中 子模型的运行 顺序 1 o g i c s t r u c t:a n l n t e g e r 把数组 l o g i c s t r u c t中序号位置为 1的对象换为 a n I n t e g e r,a n l n t e g e r为复合模 型中有子模型 的 数量 I o gi c s t r u c t a t:an I nt e ge r 返
29、回 l o g i c s t r u c t中序号 为 a n l n t e g e r的对象 a n l n t e g e r 为 1时返 回复合模型中子 模型的数量 大于 1 时返回子模型名 i n t e r f a c e:a S t r i n g l t O:a S t r i n g 2 把 a S t r i n g 2放入到 字典 i n t e r f a c e的键 为 a S t r i n g l的收集 中去 a S t r i n g l为子模 型名,a S t r m g 2 为与子模 型 a S t r i n g l的输入、输 出的一个链接 i n t
30、e r f a c e:a S t r l n g1 fin d:a S t r i n g2 在 i n t e r f a c e字典键为 a S t r i n g l收集 中查 找链接 a S t r i n g 2,有返 回 Tr u e 无返 回 F a l s e 4 2 复合模型实例 对图 3 复合模型建立如下(设在系统中子模型 A、B、C、D已经存在):A c o mmode l:一 C o mmo d e l n e w:4“Ac o mmo d e l 是代表 图 3所示复合模 型的全局变量”Ac o mmod d I o g i s t r u c t:2 p u t:
31、A Ac o mmod e l l o g Nt r u c t:3 p u t:C Ac o mmod e l l o g i s t r u c t:4 p u t:B Ac o mmod e l l o g i s t r u c t;5 p u t:D Ac o mmod d i n t e r f a c e At O A I 1-I 1 Ac o r f l mod e l i n t e r f a c e:At o A 1 2一 I 2 Ac o mmod d i n t e r f a c e:At O A O1 B I 1 Ac o mr i l od e 1 i nt e
32、 r f a c e:At O A 02一B 1 2 维普资讯 http:/ 第 2期 林杰等 面 向对 象 的模型 生成 与链 接 9 9 Ac o mmo d e I i n t e r f a c e Ac o mmo d e 1 i n t e r f a c e At o A O3 一 C I 3 Bt 0 B 1 1一 A O l 圉 3 复 合模型 实例 此 时,图 3复合模型链接 已建立 Ac om mode l 中的 l o g i c s t r u c t 和 i n t e r f a c e的 内容如图 4所示 l o g i c s U uc :t 衰 幂 模 型
33、调 甩 赦序 为 A c、B、D i n t e r f a e e 内容为 健 氇(S e t)A A I 1-I 1 A I 2-I 2 A O1 _ B I 1 A o2 Bn A 03 4 2I 1 B B r 1 A o1 B I 2 A o2 B 01 4 31 B02 D I 1 C C I 1 o3 C I 2 I 3 C O1-D I 2 C O2-D 1 3 D D I 1 Bo2 D 砼 o1 n r 3 o2 DI 4 _ T 4 n o 1 4 3 2 D 02 03 圉 4 Ac o mmo d e l 实例 变量 的 内容 复合模型 A c o r a mode
34、l 运 行时,按 l o g i c s t r u C t 所指顺序调运子模型 A、C、B、D由于各子模型的输入、输 出 都是流,因此实现数据对接 时,按 i n t e r a c e内容把各子模型相链接变量指 向数据库或 内存区 的同一处或 同一 内存变 量,自然 实现模型运 行数据对接 5 结论 通过以上分析,在 已有原子模 型类 的情 况下,建立各种具体的原子 模型是相 当容易 的,且其过 程可 程序化 原子模 型类 的建立虽然较模 型模板生成模型复 杂,但也 比传统 方法易于 实现使用本文提 出的 方法 在子 模型链接组成 复合模型 时,若系统的界面友好,如让用户 用表格或 图形
35、的方式表 示子模型 的链 接关 系,系统可 自动进 行复合模 型中子模 型的调用、数据对接和运行,实现 复合模型 的 自动组 建若 系统 配有专家 咨询系统或智能引导系统,引导 用户完成模型的建立与链接,系统很适合管理知识丰富而计算 机知识相对薄弱的管理人 员使用 参 考 文 献 1 L e n a r d A。b j e c t o r j e n t e d a p p r o a c h t。I l l。d e 1 I I 1 跏 g e me D t P r 0 c 2 0 t h H a wa n I n t e r n a t i。n a l C o n f e n c e 0 n
36、 S v s t e m s c i e n c eKa n a。k a i l u a,HW:Co m p u t e r S o c i e t y P r e s s,1 9 8 7 1:5 O 9 5 1 5 2 聂 培荛 面 向对象 的模 型管理 问题 计算 机科 学,1 9 9 3;6:7 1 7 4 维普资讯 http:/ 1 O O 管理科学学报 1 9 9 9年 6月 3 张学风,陈明裕,陈永年 决策支持系统中的模型及模型库管理系统 计算机研究与发展,1 9 9 3;3:3 6 4 1 4 夏 晓东,宋杰,刘 柏译 面向对 象 的程 序设计 一s ma 1 l t a l k
37、语 言及 环境 北 京:北 京航 空航 天太 学 出腹社,1 9 9 0 5 郭耀 煌等 运 筹学 原理 与方 法 成都:西南 交通大学 出版社,1 9 9 4-7 8 9 7 An Ob j e c t Or i e n t e d Ap p r o a c h t o Mo d e l Ge n e r a t i o n a n d Co u p l i n g L S c h o o l o f M a n a g e me n t,Fu d a n Uni v e r s i t y Gu o Ya o h u a n g S c h oo l o f Ec o n o mi c a
38、 n d M a n a g e me n t,S o u t h we s t J i a o t o n g U n i v e r s i t y Ab s t r a c t Th e p a p e r a n a l y s e s mo de l g e n e r a t i o n a nd c o u p l i n g wi t h S ma l l t a l k l a n g u a g e Af t e r c r e a t i n g v a r O U S a t o m mod e l c la s ses,s u c h a s l i n e a r
39、p r o g r a mmi n g c l a s s,t r a n s p o r t a t i o n mo d e l c l a s s,wh i c h a r e i n s t a n c e s o f a t o m mo d e l c l a s s e s,mo d e l c o u p l i n g i s u s e d t o c r e a t e c o mp o s i t e mo d e 1 I n t h e e n d,t h e me t h o d i s p r o v e d f e a s i b l e b y t h e e x a mp l e s a n d h a s s o me u n i q u e a d v a n t a g e s Ke y wo r d s:mo d e l,mod e l c o u p l i n g,d e c i s i o n s u p p o s y s t e m,o b j e e t o r i e n t e d d e M g n 维普资讯 http:/
限制150内