发帖
 找回密码
 立即注册
搜索
2 0 0

根据一系列连续自然数生成一组重复连续自然数的方法

技术交流2 2 2 2017-5-26 03:24:43
[i=s] 本帖最后由 zorsite 于 2017-5-26 11:57 编辑 [/i]

原谅我的小学数学是体育老师教的,不知道这个标题的表达是否正确。举个简单的小例子:我们希望把上游发生器生成的临时实体均匀的发往下游5个端口,因此我们希望得到重复的、连续的1,2,3,4,5;1,2,3,4,5;1,2,3,4,5;……(一组重复连续自然数)。

通常我们会根据发生器生成的临时实体的个数来生成这组重复连续自然数。
发生器的工作机制如下:
生成临时实体--确定发送端口--离开。
需要注意的是,在离开触发被激活时,临时实体仍处于发生器内,并未真正离开发生器。也就是说,第一次离开触发被激活时,使用getoutput统计发生器的输出数量,得到的值为0。
而当进入触发被激活时,临时实体已经进入。也就是说,第一次进入触发被激活时,使用getinput统计输入数量,得到的值为1。
所以我们在进入触发中用getinput命令得到的数值序列为1,2,3,4,5,6,7,8.....;而我们在离开触发中用getoutput得到的数据序列为0,1,2,3,4,5,6,7,......。
如何将这组连续的自然数序列转换成重复的、连续自然组序列呢?使用“求余数”的函数可以实现实种重复。

如图,B列是用5除以A列得到的余数,是一组0~4的重复数,再加上1,就能得到1~5的重复数了。
小结:
对于getoutput:[code]return getoutput(current)%5+1;[/code]对于getinput:[code]return (getinput(current)-1)%5+1;[/code]附上Flexsim对fmod命令的解释。
[font=Helvetica][size=13.3333px][size=1.1em][b]fmod[/b][/size] [size=1.1em][b](num value1, num value2)[/b][/size][/size][/font]
Remainder of value1/value2 as a double
[b]Description[/b]
Remainder of value1/value2. fmod returns the floating-point remainder of value1 / value2. If the value of b is 0.0, fmod returns a quiet NaN.[color=#ff00ff] This command is great for getting a repeating set of numbers because no matter what value1 is, so long as value2 is unchanged, fmod will return a set of numbers that keeps repeating itself.[/color]
──── 0人觉得很赞 ────

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
2017-5-26 16:37:05
哈哈哈,我把这种找规律类型的处理叫做“小学奥数”,一些应用策略会带有这样的过程。
2017-5-27 00:41:03
Mark~谢谢加老师的分享~
您需要登录后才可以回帖 立即登录
高级模式
返回
技术交流2
热门问答
查看更多
1
Flexsim初级建模工程师水平标准
Flexsim初级建模工程师水平标准
60
234
2
厂区生产线布局优化案例!新做的!
厂区生产线布局优化案例!新做的!
39
224
3
流水作业线的仿真
流水作业线的仿真
36
83
4
无意中找到的资料,非常适合于初学者
无意中找到的资料,非常适合于初学者
33
229
5
flexsim中文教程,pdf文档已整理-重新整理
flexsim中文教程,pdf文档已整理-重新整理
30
114
博主榜
+ 5