信息化的本质分享 http://blog.sciencenet.cn/u/Babituo

博文

变定义计算关系为定义约束关系实现动态程序的架构

已有 3934 次阅读 2011-5-26 11:42 |个人分类:基因软件开放实验室|系统分类:科研笔记| 约束关系, 动态计算

如果将计算因子理解为静态对象,而将计算算子理解为静态对象之间的约束关联。那么,存在多种类型的算子只是同一种约束的不同形式。也就是说,我们在算子层次往往要对同一个约束关系定义不同算子的计算关系,才能完整定义计算因子之间的一个约束关系。
如: A + B = C;
A,B,C是计算因子,+是计算算子;
定义的是三个静态对象A,B,C之间的一个约束关系:C必须是A与B的和。
这里,在这三个变量之间,只存这样的一个约束关系。
这个约束关系还可以表述为:A和B的和必须是C;B必须是C与A的差;A必须是C与B的差。
如果要在目前的计算程序中实现这个约束关系,我们必须编写如下的三条语句:
C := A + B;
A := C - B;
B := C - A;
分别在某两个或两个之一的变量发生变化时,来维护这个三元的束关系不变。
 
对于定义一个约束关系来说,这三条语句中的任何一条,都已经完整地表达了约束关系的全部信息。如果计算机足够聪明的话,我们只要告诉它其中的任何一条语句,计算机就应该知道,我们其实不是让它来执行一个计算过程,而是让它在三个可独立变化的对象之间,建立一个约束关系。
 
这需要对计算程序概念进行一番改革:从“定义计算步骤”转变为“定义约束关系”。
如果这个改革成功,我们编写程序的工作,就会变得更加直观和简洁。——只要我们用任何一种方式定义了对象之间的一个约束关系,对象之间就会知道按这个约束关系自动进行相互的约束。
对我们的程序进行真正的“动态的链接”也不会需要晦涩和累赘的编程了——建立、拆开对象之间的约束关系,对象之间就能自动按新的约束关系运行。
 
 
执行程序如下:
对该约束定义测试程序补充将适当的变量设为状态变量,并将约束关系进行连接的功能,就可以定义出基本的元胞内部约束关系,扩展为一个元胞定义工具。
 
操作指南:
1.定义对象:
在“定义对象”功能框的编辑框中输入对象名,点击“加对象”按钮,对象列表框中便增加了一个指定名称的对象。此处的“对象”,只是简单的为一个双精度数。
2.定义约束:
2.1在“定义对象”功能框的对象列表框中选中某一个对象,然后点击“定义约束”功能框中的某个“选对象”按钮,所选对象填入被选中的对象,列在“选对象”按钮旁边的编辑框中。
2.2在约束类型选择下拉框中选择某种约束类型,目前只能是“加和性约束和乘积性约束”两类约束之一,然后点击“加约束”按钮,即在被选中的三个对象之间建立了指定类型的约束关系,建立的约束关系列于“定义约束”功能框的约束关系列表框中。
3.约束测试:
3.1 在“定义约束”功能框的约束关系列表框中选中某个约束,该约束中出现的对象会列入“约束测试”功能框的两个下拉框中,用来选择测试的因变量和自变量。
3.2 在“约束测试”功能框的两个下拉框中,分别选择测试的因变量和自变量,二者不能同时选同一个对象。选择因变量和自变量之后,“定义约束”功能框的约束关系列表框中的约束关系的表达方式也做相应的变化。
3.3 在"提交变化"左侧输入框中输入因变量的改变后数值,点击提交,自变量数值会自动根据约束进行改变。改变后的数值会显示在“定义对象”功能框中的对象列表框中。
 


https://wap.sciencenet.cn/blog-33982-448126.html

上一篇:分享一个围棋开局棋势信息的可视化视频演示-云图
下一篇:基于电子式传感器的高压计量装置及其远程测试系统的研究
收藏 IP: 112.91.148.*| 热度|

0

发表评论 评论 (10 个评论)

数据加载中...
扫一扫,分享此博文

Archiver|手机版|科学网 ( 京ICP备07017567号-12 )

GMT+8, 2024-4-30 00:57

Powered by ScienceNet.cn

Copyright © 2007- 中国科学报社

返回顶部