Coding Poet, Coding Science

Keep Stupid, Keep Hungry


  • Archives

  • Categories

  • Tags

  • Resources

  • About

  • Search
  • 简体中文
  • English (US)
close
Coding Poet, Coding Science

快速了解Modelica与OpenModelica建模1-基本知识

Posted on 2016-03-11 | Post modified 2016-12-14 | In 仿真 |

Modelica里面倒是有不少的面向对象的建模的工具,也支持PetriNet的描述。而且最近也有相关的论文的发表(Proß et al. 2012)。OpenModelica上面的PNlib工具包倒好像是不错的。

OpenModelica是其一个实现。OpenModelica环境由若干个子系统构顶成。包括文本模型与图形模型编辑器、编译器调试器与执行环境、笔记本、优化器以及Eclipse插件。其中的编译子系统用于将Modelica语言编译成C代码。面向Eclipse的插件被称为MDT。最基本的方式自然是安装之后点击OMShell进入文本编辑环境。里面输入Modelica的代码。OMShell命令会打开一个新的窗格,使用OMShell-terminal命令可以直接在Linux终端中进入OpenModelica的环境。这时进入的就是交互式模式。

model A Integer t= 1.5; end A;
instantiateModel(A);
model C
Integer a;
Real b;
equation
    der(a) = b;
    der(b) = 12.0;
end C
Read more »
Coding Poet, Coding Science

常见的数据结构的抽象

Posted on 2016-01-15 | Post modified 2016-12-14 | In 计算机科学 |

为了编程的顺利进行,自然有一种控制复杂性的措施。而且复杂性的控制从编程语言一开始的时候就有了,成为所谓的内部模式:内建的数据结构,甚至是语言机制里面的内容。现在我们看一些常见的数据类型。

数组

按照Wiki的要求,应该按照数据结构和数据类型两个不同的角度讲数组array。作为数据结构的数组是由一系列元素(值或者变量)构成的,每个元素数数组由键或者索引来标识。按照要求,数组里的元素的存储应该可以按照数学公式来计算,也就是说,数组的标识不能是简单的字符串,而要使用一个域,特别是使用整数来标识。

数组在历史上出现得是非常早的,经常作为列表list以及字符串string的实现。在现代计算机当中,内存通常都是按照一维数组的方式来计算的。而现代计算机中的优化,特别是向量处理机,都是针对数组的操作而优化的。(数据结构就是数据结构,跟它们使用硬件或者软件实现并没有关系)。

数组的一个大优势在于所使用的下标可以在运行时候被计算出来。但是需要注意的是,在底层数据结构也可能非常复杂。数组可能用哈希表、链表、查找树等结构实现。总而言之,底层数据结构与顶层数据结构有很大的不同。1945年John von Neumann写了第一个数组排序的算法。

作为抽象数据类型的列表,包含的操作有:

  1. 创建一个空表;
  2. 测试当前列表是否为空;
  3. 添加一个元素到列表的第一个位置;
  4. 添加一个元素到列表的最后位置;
  5. 得到列表的第一个元素;
  6. 引用列表中除了第一个元素之外的其它元素。
Read more »
Coding Poet, Coding Science

维基上定义的传递系统

Posted on 2016-01-13 | Post modified 2016-12-18 | In 计算机科学 , 计算模型 |

众所周知的是传递系统只是从系统转换的观点来看问题,其理论的根据跟抽象重写系统是一样的,但是可能说明的角度不一样吧。传递系统分成两类,带标签的和不带标签的系统。传递系统在应用于模型检查的时候经常使用带标签的形式。

Action Language是专门描述状态传递系统STS(state transition systems)的语言。经常用于形式化地创建一系列的模型。PDDL是著名的一种Action Language。

状态转移系统往往显得太过抽象。感觉好像跟动力系统理论和自动机理论都有一些差别。或许它们是研究离散状态的一种抽象理论吧。状态转移系统自然是关联着状态及其转移的。但是动力系统呢?

目前,我们似乎可以这样关联状态转移与动力系统理论。所谓的系统,我们关注的还是系统的演化的特性,也就是系统的存在及其演化。那么,自然中心的问题是,系统是怎样随时间变化的?因而,首先的问题就是所谓的对于状态的定义。在动力系统中,状态是由一个实参量标识的,它可以对时间演化可微。而在状态转移系统中,状态是一种不同的数学结构,比如说,状态是一个有穷序列,而时间也是离散的。那么,基于这种认识,似乎结合起来看,所谓的系统理论,就是某个数学结构上面的参数的理论。就像是微分几何中,每一点附上一个特定的数学结构一样,系统理论是演化过程中的每一时间点附上一个状态–似乎系统理论研究的情况,都是底空间是低维的情况。

Read more »
Coding Poet, Coding Science

信息几何简介

Posted on 2016-01-06 | Post modified 2016-12-14 | In 数学 , 几何 |

认识信息几何

信息几何的方法其实是将统计理论中的参数问题变成额外的一个空间,在这个空间上建立统计函数之间的距离,相当于仍然是使用测度的理论研究问题。这种方法自然对于参数的生成有重要的启示。启示我们为什么要选择这样的参数,这什么参数有这些形态。在扩大的空间当中,自然而然地可以非常方便地研究统计系统的重多的要素。在机器学习中也有更多的应用。

然而单纯起来看,并非信息是几何的,而是因为分布函数之间的距离就是可以度量的。这样的话,未必形成微分流形,甚至是更一般的内容也可以,比如离散分布与离散参数的问题。总而言之,关键在于考察“所有可能的参数所形成的空间”,而不是“某个参数下的分布”所起的作用吧。

信息几何有几种经典的方法。第一是基于流形上的Riemann度量的方法,第二种是基于\(\alpha\)联络与对偶几何的方法。还可以是基于曲率度量的方法,或者基于信息散度(divergence)的方法。散度在信息什么几何中充当距离函数,用来度量两个点之间的分离度或者差异,但散度不是严格意义上的距离函数。

Read more »
Coding Poet, Coding Science

守护进程的编写思路(C与Python)

Posted on 2015-12-09 | Post modified 2016-12-14 | In 操作系统 |

参考http://www.netzmafia.de/skripten/unix/linux-daemon-howto.html。上面提到Linux守护进程应该做的基本的事情,守护进程主要包括了

  • 从主程序中创建子进程
  • 改变文件的umask任务
  • 打开日志文件以记录日志
  • 创建会话ID
  • 将工作目录移动到一个安全的位置
  • 关闭标准的文件描述符(守护进程不存在标准输入与输出的问题)
Read more »
123…11
Istyasna

Istyasna

GO FORTH now and create masterpieces of the publishing art!

55 posts
36 categories
189 tags
RSS
GitHub Aliyun
Creative Commons
Links
  • Homepage
  • Hainan University
  • Qi Qi
© 2016 - 2017 Istyasna
Powered by Hexo
Theme - NexT.Mist