CPN Tools学习——时间和队列【重要】

-Timed Color Sets 时间颜色集

-Token Stamps 令牌时间戳

-Event Clock 全局/事件/模拟时钟

-Time Delays on Transitions过渡的时间延迟

- List Color Set列表颜色集

- Queue排队

1.时间颜色集

在定时CPN模型令牌中有:

(1)象征性的颜色

(2)时间戳:时间戳是一个非负整数.

句法:1`e@+表达式

示例:

(1)1`A@+5:表示这个令牌A将在时间5可用以启用转换

(2)多重令牌:1`A@+2++1`B@+5,表示A将在时间2可用以启用转换,B在时间5可用。中间两个++是用于多集的符号。

(3)1`(A,B)@+20,表示有序对在时间20可用

系统有一个表示模型时间的全局(事件)时钟。当全局时间为0,这些都不可用.

        通过在CPN工具定义末尾添加此时间关键字timed,来设置定时颜色集。可以看到net中P1和P2的令牌都自动出现了默认的@0。因为如果不指定,CPN工具默认提供当前全局时钟0.

这个time=0就表示。全局时钟时间或事件时钟时间此时为0.

将时间延迟分配给转换T所需要:

1)选择转换(即左键单击)

2)按Tab键

3)在@+后键入延迟表达式

        这里输出的结果P3由转换T1和输出弧表达式共同决定,所以这里输出P3的时间戳等于两个地方的时间戳加起来。

        虽然执行一次后,转换T1处有10的延迟,但是当前全局时间还是保持0不变,因为T1在时间0时在P1和P2中仍然有可用的,即0时仍可以触发转换。即全局时间time等于可以出发转换T1的最早时间。

2.令牌上的时间戳

手动设置令牌上的时间戳

执行一步操作后,当前全局时间为5,P1可执行(0<=5),P2可执行(5<=5),故T1可触发,累计时间戳就是输出的时间戳。

CPN当前的全局时间time等于可以出发转换T1的最早时间

3.队伍Implementing Queues

(1)HD和TL操作

(2)列表构造函数(: :)

构造函数,它显示为这两个冒号。这个构造函数在队列的实现中发挥非常重要的作用。

  • 构造 元素::元素列表——元素列表
  • 也构造两个变量
  • 将列表分配给变量的话,是前面X分配第一个元素,后面XS分配后面剩余元素并成为列表。

(3)串联运算符(^^)

用于从两个参数列表构造一个列表,因此该运算符的左侧是一个列表,右侧也是一个列表。

实操:

定义一个时间颜色集JOB和变量j,并在两个库所使用颜色集JOB,在弧上使用变量j。在转换上设置10的延迟。

在输入库所放置一些令牌,以触发转换。

在转换处放置一个循环:

可以看到最开始全局时间time=1,因为job=1,在其他中是最早可以触发转换的。因此是当前的全局时间。

新加的颜色集是E,里面只有一个变量e,(有点没明白这样做的意义,好像是当该服务器一次可以处理一项作业,就可以设置这样的自循环)

       因为转换sever会到输出,也会到timer,由于变量e获取过来的时间是11,那么要再回到转换sever重新触发,至少也要有11.

显示此时执行一次后,当前全局时间为11,因为剩余的job2和job3可执行时间都小于11,都是可以执行的,所以这里可以进行选择,否则就是随机了。

定义列表颜色集JOBList,以及变量js,并向net中添加队列(队列的实现就是红色框内的结构)。

理解:

队列初始是空的1`[ ],串联函数js^^[j]表示添加来自左边的元素j,且都是添加在Queue的末尾的。队列的形成方式:在现有队列的尾部添加一个元素

利用构造函数j::js,是为了删除Queue中的第一个元素,从中删除第一个元素(j代表的)后,将队列的其余部分并将其放回队列中,我可以拿走这个j,并将j与此转换一起使用,然后在输出位置放置.

  它取出队列中的第一个作业来处理,然后转到队列的下一个作业中。(太像优先级队列更新啦)

此时执行的转换是FormQ,要看的是job3的可执行时间。

此时执行的转换是Sver,要看的是Timer的可执行时间。队列的更新如图所示。

<think>好的,我现在需要处理用户关于CPN Tools的查询。首先,用户明确提到想要查找与CPN Tools相关的技术资料或使用方法,特别是教程下载资源。我需要回顾之前的对话记录系统提供的引用内容,确保回答准确且符合用户需求。 首先,检查用户之前的提问我的回答历史。用户之前可能提到过CPN Tools的基本概念,现在需要更具体的教程下载链接。根据系统提供的引用,引用[1]提到了一个仓库,里面有《CPN建模语言及CPN Tools的使用教程》的下载资源,这应该是重点推荐的内容。同时,引用[2][3]涉及变迁属性时间队列的具体使用,可能作为补充资料。 接下来,我需要确保回答结构清晰,分点说明下载教程资源。用户可能需要直接的链接,所以应该提供具体的网址,比如GitHub仓库。同时,要确认链接是否有效,但根据引用内容,链接可能是假设的,所以可能需要提示用户自行搜索或提供通用途径。 另外,用户可能对安装步骤基本操作有疑问,所以需要简要说明下载后的安装过程教程涵盖的内容,如建模基础、高级功能等。还要考虑用户的操作系统,CPN Tools通常支持Windows、LinuxmacOS,但需要确认版本兼容性。 然后,补充资源部分可以包括官方文档、视频教程书籍推荐,这样用户有更多学习渠道。还要注意引用标识的正确添加,如引用[1]、[2]、[3]的位置,确保每个引用对应正确的部分。 最后,生成相关问题,引导用户深入探讨,比如安装问题、建模案例、时间队列应用等,这样能帮助用户进一步解决可能遇到的困难。需要确保问题相关且具有针对性,符合用户潜在的需求。 总结,回答需要包含下载方式、教程资源、安装指南、学习路径补充资料,结构分明,信息准确,同时引用正确来源,并附上相关问题促进进一步互动。</think>关于CPN Tools的技术资料及使用方法,以下是整理后的信息: ### 1. CPN Tools教程资源 - **《CPN建模语言及CPN Tools使用教程》** 该教程详细讲解了CPN(着色Petri网)的建模语言基础、模型构建步骤及工具操作技巧,涵盖以下内容: - CPN建模的核心语法(如颜色集、变迁、弧表达式)[^1] - 模型仿真与状态空间分析 - 通过案例演示时间队列的建模方法(例如使用`::`构造函数处理队列元素)[^3] - **下载地址**:可通过GitHub仓库搜索关键词`CPN Tools Tutorial`或访问开源建模社区获取[^1] - **官方文档与案例库** CPN Tools安装包通常包含`examples`文件夹,内含经典模型(如通信协议、分布式系统),适合结合教程实践。 --- ### 2. CPN Tools下载方式 - **官方渠道** 访问[CPN Tools官网](http://cpntools.org/)下载最新版本,支持Windows、LinuxmacOS系统。 - **注意事项** - 安装时需确保系统已配置Java运行环境(JRE 8+) - 部分Linux系统可能需要额外安装图形库依赖 --- ### 3. 关键功能学习指引 - **变迁属性设置** 在CPN Tools中,变迁的`代码动作`通过`output`关键字定义输出变量,例如: ```python action output (x, y); //声明输出变量 ``` 输出变量需为无重复的CPN变量元组[^2]。 - **时间队列建模** 使用`::`构造函数实现队列操作,如`X::XS`表示将元素拆分到变量`X`(头部)`XS`(剩余列表)[^3]。 --- ### 4. 补充学习资源 - **视频教程**:YouTube搜索`CPN Tools tutorial`可找到分步操作演示 - **书籍推荐**:《Principles of Petri Net Design with CPN Tools》(理论结合工具实践)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值