设为首页收藏本站

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

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 8297|回复: 15

[悬赏] 仿真中车辆(transporter)减速问题

  [复制链接]
发表于 2009-12-8 21:41:00 | 显示全部楼层 |阅读模式
在做车辆路径问题中,仿真时发现即使设定了acceleration属性中的加减速,加速过程有体现,但是在即将到达指定位置需要停止时,减速过程无法体现,车辆即将追尾时减速过程同样无法体现,(speed属性均显示不出减速过程)求高人怎么解决?
发表于 2009-12-9 14:16:15 | 显示全部楼层
我也存在这个问题,短距离时加减速根本不管用
 楼主| 发表于 2009-12-10 19:38:06 | 显示全部楼层
这个问题其实很严重的,对于多车辆多任务的输送问题,如果速度不能尽量准确的反应,那么仿真的误差就太大了
 楼主| 发表于 2009-12-14 10:23:48 | 显示全部楼层
自己顶起来,真得很重要,麻烦高手指点啊
发表于 2009-12-14 12:22:21 | 显示全部楼层
本帖最后由 PINOCCHIO 于 2009-12-14 12:28 编辑 6 b4 V% j1 f7 F1 m) ]; v! n3 ~
2 j  O( r7 R" ]' p/ M
speed项在勾选加减速后,表示的是最终速度。
8 t+ d; G, F, @- Y4 I如果需要减速,必须设置deceleration项,表示减速度值。, D- b7 a8 N% U  k+ G" B
如果你希望transporter在指定位置通过deceleration项的设置停下来,你需要计算一下它能不能停得下来,就好象transporter原本速度是100米/秒,而你设置的减速度是10米/秒方,而又要求它在10米的地方就停,这是不符合规律的啊?!
# q9 L) l" h, s  P6 z) k加速度和距离的关系,符合的是加速度公式:S=v0t+1/2at^2
. A1 r( y4 G8 }4 k5 |, c& {而且,你还要注意,track对象是有长度单位的,利用transporter和track对象建模,和实际运输过程中的道路、车辆是完全一致的,不存在你说的问题。
 楼主| 发表于 2009-12-14 13:59:40 | 显示全部楼层
十分感谢楼上的热心回答。
: L: P7 @- N4 U) p但是我还是不明白,楼上的你也可以模拟一下,当车辆(transporter)在道路(track)快到达目的地的时候,你可以让仿真Stop,然后看车辆的属性(主要是Speed属性),根本不会显示减速的过程,用这种方法加速的过程到是能看出来。至于你提到的中学物理当中的加减速度问题我当然清楚了。
. y  W" R; c* X* S* }7 I最好那位高手能发个模型上来,能模拟出减速的过程(在车辆属性中能够显示出来)。
发表于 2009-12-14 21:58:10 | 显示全部楼层
本帖最后由 PINOCCHIO 于 2009-12-14 22:00 编辑
0 C7 r2 g8 ~% X& j" \9 k
; P- X4 s5 R) K3 x, H楼主注意,speed属性是最终速度,也就是经过减速后你希望transporter达到的最后稳定运行的速度,而不是表示transporter当前的运行速度。transporter当前运行速度的属性是currentspeed,你可以查看该属性,得到速度的当前值,而不能把speed当作是transporter对象的当前速度。speed属性在用户不设置的情况下,deceleration值是不会影响它的。
 楼主| 发表于 2009-12-15 09:55:05 | 显示全部楼层
明白楼上的意思,不好意思习惯弄错了,就是您说的currentspeed属性,您仿真的时候可以通过这个属性看出车辆减速的过程吗?
. L: O% i* {* o8 ^3 `6 ~0 s7 Z启动加速过程能够在这个属性反映的数据中看出来(逐渐增加的),但是到达目的地减速的过程我是看不出来(速度突然变为0)。0 J" K+ O  ^# L) }, y$ O
我的意思是怎样才能将减速的过程通过属性反映的数据表现出来?
发表于 2009-12-16 20:24:55 | 显示全部楼层
8# taoyifei2000 & m: l8 ]5 x+ {
可以看到的。
: S5 k( z3 u5 \! o( G/ z5 M楼主可以打开emplant的范例文件,里面有一个transporter变速的例子,有加速,也有减速,可以看到某个时刻减速后的速度值。
 楼主| 发表于 2009-12-17 10:53:34 | 显示全部楼层
感谢楼上的,看到那个例子了!' g' E2 ]) b9 U' W: T. l
这种方法以前我也用过,就是在车辆进弯道的时候@.speed:=(需要减到的速度);这种方法可以实现弯道减速。
4 B% }" ?3 y8 ^5 f) e1 J: g( b  [但是就是对于到达目的之前开始减速的问题不是很好用,可以通过加减速度公式算出减速距离,然后触发方法令@.speed:=0;   不知道有没有什么简便的方法。
$ c6 H$ K- N' g/ Z# T十分感谢PINOCCHIO !!
发表于 2009-12-17 16:11:05 | 显示全部楼层
如果你只是需要transporter到指定位置的时候就停止下来,根本不需要管transporter的速度,在track对象上指定的位置设置一个sensor就可以了。
 楼主| 发表于 2009-12-18 09:41:54 | 显示全部楼层
车辆到达一个目的地之前是需要逐渐减速的,离开起始位置是缓慢加速的,如果这个过程忽略了,仿真的结果误差就大了。尤其是车辆频繁启动、停止的情况。
: \2 {+ ?& [4 `2 L我以前的方法就是设置sensor,但是这样使车辆速度突然变为0,和实际不太相符啊。看来只能通过加减速度公式算出减速距离,然后提前设置一个sensor把速度减下来了(@.speed:=0),等到了目的地再触发相应的sensor。
发表于 2009-12-18 17:00:36 | 显示全部楼层
1、如果你需要在某个确定的时候让车辆经过减速过程停止到确定的地点,那么当然需要通过加速度公式计算减速距离。
* s$ K6 z# E/ S5 p2、如果加速和减速是某个事件触发的,应该将加速和减速过程定义为transporter对象的方法,当事件发生时调用对应的方法进行加速或者减速,不过那不一定会让车子停到你想停的地方——就像出车祸的时候,你想让车十米之内停下来,但是你的减速度不够,而初速度又过快,是不可能的。
发表于 2013-6-25 09:33:20 | 显示全部楼层
受教了
发表于 2013-6-25 12:02:54 | 显示全部楼层
我明白了,减速度不是在你对小车发出停止命令的时候运行的,而是当前设置的小车的速度小于小车当前速度时,小车才会减速,在就涉及到上面讲的,要提前计算减速距离,在减速距离起点从新设置一个小车速度,这样小车就会减速了,距离当小车当前速度为1,经过传感器时,你从新附一个速度给小车为0,这时候小车不会立刻停下来,而是减速
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 08:31 , Processed in 0.017230 second(s), 14 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

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