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的可执行时间。队列的更新如图所示。

相关推荐
西岸行者5 天前
学习笔记:SKILLS 能帮助更好的vibe coding
笔记·学习
悠哉悠哉愿意5 天前
【单片机学习笔记】串口、超声波、NE555的同时使用
笔记·单片机·学习
别催小唐敲代码5 天前
嵌入式学习路线
学习
毛小茛5 天前
计算机系统概论——校验码
学习
babe小鑫5 天前
大专经济信息管理专业学习数据分析的必要性
学习·数据挖掘·数据分析
winfreedoms5 天前
ROS2知识大白话
笔记·学习·ros2
在这habit之下5 天前
Linux Virtual Server(LVS)学习总结
linux·学习·lvs
我想我不够好。5 天前
2026.2.25监控学习
学习
im_AMBER5 天前
Leetcode 127 删除有序数组中的重复项 | 删除有序数组中的重复项 II
数据结构·学习·算法·leetcode
CodeJourney_J5 天前
从“Hello World“ 开始 C++
c语言·c++·学习