设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 15911|回复: 16

[求助] 仿真过程中自动改变一些参数的疑问

[复制链接]
发表于 2009-2-12 14:14:50 | 显示全部楼层 |阅读模式
5仿真币
现在想做一个仿真模型,create 模块会载入excel的一个计划,然后按这样的计划产生item。但是希望在仿真运行一段时间后开始暂停,然后可以自动载入另一个计划,而且保持之前运行的中间结果,然后继续运行仿真。这些步骤的完成希望是没有手动干预的,不知道怎么可以实现。不知道版上的大人可否给点建议,非常感谢。。。
附件: 您需要 登录 才可以下载或查看,没有帐号?注册

最佳答案

查看完整内容

不是很明白你“暂停”是什么意思。如果你知道如何用Create 加载计划的话,那么你可以用二个Create模块,分别对应两个计划,只是后一个Create 模块受控于一个Lookup Table, 这个Lookup table 在开始时输出为0,等到一段时间后(你设定的时间)输出为1,这样就可以启动第二个Create 模块。见图。
发表于 2009-2-12 14:14:51 | 显示全部楼层
不是很明白你“暂停”是什么意思。如果你知道如何用Create 加载计划的话,那么你可以用二个Create模块,分别对应两个计划,只是后一个Create 模块受控于一个Lookup Table, 这个Lookup table  在开始时输出为0,等到一段时间后(你设定的时间)输出为1,这样就可以启动第二个Create 模块。见图。

本帖子中包含更多资源

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

x
发表于 2009-2-12 14:21:46 | 显示全部楼层
耐心等待一下,会有满意答案的
发表于 2009-2-12 15:12:28 | 显示全部楼层
楼主是不是这个意思(如图),按照博士的指示试了一下可行。

本帖子中包含更多资源

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

x
发表于 2009-2-12 16:46:52 | 显示全部楼层
不需要每个时间都输入数值,因为lookup table 的设置是 stepped,  也就是说,只需要输入数值变化的时间点,对于没有输入的时间点,这样的设置就意味着保持数值。

本帖子中包含更多资源

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

x
发表于 2009-2-12 17:09:54 | 显示全部楼层
多谢您的指导!
 楼主| 发表于 2009-2-13 00:37:03 | 显示全部楼层
不好意思阿,因为在国外存在时差,才知道版上这么多人在帮忙。这种方法已经基本能解决我目前的需要了,非常感谢各位!
发表于 2009-2-13 00:50:37 | 显示全部楼层
希望您多来论坛交流,再次感谢您的提问,我从中也学到不少
 楼主| 发表于 2009-2-17 14:54:06 | 显示全部楼层
这两天在原先问题的基础上碰到新的问题,希望再次得到解答。王博士提出的这种方法是确保了第一个create模块中设定的schedule能够完全运行完,而第二create模块设定的schedule改变了schedule开始运行的时间,其实只要当create模块的start connector得到一个1,那么这个schedule就会被载入然后直到运行完。如果说我现在希望第一个create模块中载入的schdule还没有完全运行完切换到第二个schedule,这个时候第一个create模块就是处于暂停状态,但是当第二create模块的schedule完成之后重新继续回来完成第一个create剩下的schedule。这个该如何实现呢?希望大家能指点一下。。。
 楼主| 发表于 2009-2-18 00:51:23 | 显示全部楼层
第一个schedule的plan在执行中间会被挂起,但是是否随机或者预设应该没有太多影响吧。当第一个schedule被挂起后,第二个就会执行,等第二个执行完之后又返回继续执行第一个schedule.
发表于 2009-2-18 10:52:03 | 显示全部楼层
原帖由 Yezihai 于 2009-2-18 00:51 发表
  M2 O9 t5 t1 W0 V+ _第一个schedule的plan在执行中间会被挂起,但是是否随机或者预设应该没有太多影响吧。当第一个schedule被挂起后,第二个就会执行,等第二个执行完之后又返回继续执行第一个schedule. ...

0 ]3 r% t5 B  w% G* Q8 M
0 b2 ~- z7 W9 R' m" K( l" u) z我有些疑惑的是,, c# k# a& J+ @, _
- \9 S* r" Q; y( R% t! v
(1)这两个计划的切换时间(计划1到计划2,计划2到计划1)是否已知?
* l* D$ A( `' j# c9 N% a  `(2)如果已知,为什么这两个计划不能合并在一起?如果未知,那么怎么确定计划当中的每个物件产生时间(是绝对时间,还是相对于某个事件的时间)
 楼主| 发表于 2009-2-19 05:39:58 | 显示全部楼层
(1)计划的切换时间应该是未知的,比如要等待生产了10零件之后,而每个零件的生产时间只是一个服从三角分布的数值。. Y3 v, N) Q6 z, P
(2)比如计划是关于原料供应的,在0时刻供应10单位材料1,1时刻供应10单位材料2。。。然后当生产了10个零件之后,得到一些仿真的结果输出分析之后产生一个更好的计划。然后载入这个新的计划继续运行。
9 m4 I' @* ^7 m" e) r; t" {& }* W
0 P% R4 t1 G$ j) p6 c" b9 Y可能我之前说的优点乱七八糟了,是想实现这样的过程:
! p$ p) Y1 B* M1 r: m1. 从excel里面载入一个原料供应的计划- C9 r; [6 ~2 E
2. 用这个计划开始进行仿真8 ^0 Z" G- G' [! ?0 ~% o
3. 当某个时间到达的时候挂起仿真(比如制造了10个零件e),4 A% B( l7 R4 [* L! u, g. a7 L
4. 导出目前的仿真结果到excel进行分析,然后制定一个新的改进的计划: a0 `+ d1 w4 [
5. 重新载入这个新的计划' H6 @' i, o) y3 g- c. ?
6. 在原来暂停的状态之上继续新的计划% @. Q4 j2 \& @1 j4 q8 u1 T2 R
8 r6 l' a; @0 Y; Y
非常感谢!
发表于 2009-2-19 09:02:16 | 显示全部楼层
如果你这个模型需要一边仿真,一边动态的生成计划,然后再动态地读入,而你的计划又采用了计划表格的形式,那么如何让模型知道你未来生产计划的每个发生时间点就是一个难点(发生数量和零件类型还不困难)。
) s7 L$ i) r! C! ~0 n
6 A6 o2 L) c+ d% g( S如果你需要借助Excel,那么一个办法就是采用 Read 模块 按照一定时间间隔从 Excel 的计划中读入一行数据,这行数据包含了需要产生零件的仿真时间,然后用这个时间和 currenttime 对比,如果时间到了,那么就产生一定数量的物件。: r/ F" }6 z) o, I

# U! K4 h- {$ I$ ?这样的好处,就是如果你需要动态的生成计划,那么就把新增加的计划放在Excel 中原来计划的末尾。
 楼主| 发表于 2009-2-20 00:28:04 | 显示全部楼层
谢谢指导,还是有一些疑问存在。
5 F9 }1 b, U! F2 p% \. J) d  o”采用 Read 模块 按照一定时间间隔从 Excel 的计划中读入一行数据,这行数据包含了需要产生零件的仿真时间,然后用这个时间和 currenttime 对比,如果时间到了,那么就产生一定数量的物件。“ 不是特别明白这句话的意思,因为原料供应计划和生产零件的时间是分开独立的,虽然生产多少个零件是预先计划的,但是生产零件完成时间是无法预计的。而且在零件生产的时候,这边原料供应是一直在继续的。$ c; s" L- b7 h5 z2 f; r

' ]7 Y2 W! L% j/ c现在我的最初始计划是存在excel里面,然后在仿真开始前载入一个global array,然后一个create模块和这个array通过DDL连接起来,所以在仿真开始前,计划中所有的一条条细节都已经载入到create模块中的。现在的问题是在某个时刻到达之后(生产10个零件),假设这个时刻我是可以捕捉到的,比如通过一个判断语句之类的。但是然后我怎么可以send a message让create模块中接下去的计划不再运行完然后自动暂停?有没有一些内部参数可以控制?
  n7 C; u1 ?) {. L( u( ~% I  t0 e, d8 ~
如果这个能实现,那么等待生成新的计划之后,我可以把新增的计划放在原来计划的末尾。因为我无法判断create模块中它已经执行到哪一条细节了,如果我可以知道,那么我就可以把excel中剩下还未执行的计划删除,加上新的计划。这个应该是我目前这种方法最大的问题吧。
9 e; z' X+ H0 Q" r0 W4 _/ v- M, f% c7 J
非常感谢指导!
发表于 2009-2-20 16:23:41 | 显示全部楼层
Create 模块 (1)一旦产生计划,就会将计划执行完 (2)在Excel 中新生成的计划不能在模型不中断的情况下再通过 array **批量** 读入。1 F/ f2 s' l. r( i3 }& j& W

& u5 W+ r# M9 Y1 v3 O现在能做到动态读入数据的方法,就是 (1)在excel 中不断删除、增加、调整新计划,始终保持计划表格是希望读入的数据(包括时时刻刻把需要中断、不能执行的计划调整到计划表格的尾部,把需要执行的计划提升到合适的行数。每一行的计划数据,包括希望产生零件的时间、种类、数量等。(2)利用 read 模块一行一行的读入计划数据。然后判断时间是否来临,如果时间合适,就产生新的物件。+ B' p7 I2 r2 s8 t( N3 }& }2 O1 m
) m) Y, x0 x% u% f# S. d. W" \, Z
我做了一个例子,供你参考。

本帖子中包含更多资源

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

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真   

GMT+8, 2025-7-6 09:39 , Processed in 0.015211 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表