Jump to content

acceleration woes


agraunke
 Share

Recommended Posts

Hi All,


I can't seem to figure out acceleration on entities :(


I have attached a simple demo model that creates a couple of entities and sends them on their merry way in free space. I can't seem to control the acceleration though! I've tried assigning ModelEntity.Movement.Acceleration and also using the Travel step, but neither seem to work. I'm sure this is pretty basic to actually implement, so please help!

acceleration.spfx

Thanks,


Adam

Link to comment
Share on other sites

The small step that you are missing is in addition to assigning acceleration, you also need to assign an acceleration duration. This is done by assigning a value to "Modelentity.Movement.AccelerationDuration".


Let us know if you have additional questions on this.

Link to comment
Share on other sites

Perfect-- thanks for the quick response!


It seems counter-intuitive that AccelerationDuration is a required property instead of a calculated value. Shouldn't the duration just be DesiredSpeed/Acceleration? More generally, I guess, any one of those values are a function of the other two (for time-constant accelerations). Any way to accommodate that?


When I inputed that expression for the AccelerationDuration everything works except for unit conversions. I have everything in seconds (including the model unit settings) but Acceleration gets stored as m/min^2 and does not get converted when using it in the above expression. In other words, all the unit types and values are set to meters and seconds, but I still have to manually convert one expression :(


I've attached the working model for reference.

acceleration.spfx

Thanks again for your help!


-Adam

Link to comment
Share on other sites

Agreed Adam, very counter intuitive... especially considering that an entity can have a 'acceleration' of 0.1, an 'accelerationDuration' of 10, but NOT be accelerating because its already completed the acceleration. Therefore, the actual (non Simio) state of the entity is acceleration of zero as it is not accelerating.


Regarding the unit conversion Adam, you can safely take the 3600 out of the expression if you ignore the units and set them as 'hours' for duration. You are double unit converting... first you are taking an hours expression (the calculation) and dividing it by 3600 to put it in seconds, then telling Simio it is in seconds. Just leave it as hours and it works.


The calculation in your step is as follows:

ModelEntity.DesiredSpeed/(ModelEntity.Movement.Acceleration/3600) in seconds.


Desired Speed = 1 m/s, or 1/3600 h

Acceleration = 1 m/s/s, or 1/3600^2 m/h/h


Therefore, the calculation carried out is:


(1/3600) / ((1/(3600^2))/3600) *3600 -- the final 3600 is the conversion from hours to seconds that Simio does because you have selected a unit of seconds.


Leave it in hours and take off your 3600 conversion factor and it will all work.


PS. The above reads clear as a good stout to me. If anyone feel frees to convert it to a nice light beer go right ahead!

Link to comment
Share on other sites

  • 4 weeks later...

So, it turns out the travel step was the answer :oops:


However, I have noticed some interesting behavior. Namely, at the end of the travel duration, the entity is assigned its "end travel speed" regardless if the entity was able to accelerate to that speed. In my case, I have short travel distances in which the entity is not able to acheive its ending speed. Instead of just remaining at the max speed it was able to accelerate to, the entity jumps to the desired end speed resulting in a discontinuous velocity situation. This is in sprint 90. If it hasn't already been addressed, it would be great if there was an additional option to "override" the entity's current speed with a desired end speed (or not, in this case)... that way the entity can accelerate towards a desired end speed, but not have a discontinuous velocity if that speed is not reached.


My current work-around is to set the desired end speed as a calculation that returns the desired speed or the max/min speed achieved, but that is cumbersome and relies on my correct understanding and application of basic phyics :D


Thanks!


Adam

Link to comment
Share on other sites

  • 5 years later...

Hello All, 

In the attached file, you could accelerate the speed of entities in the free space. I want to do the same thing in the network. Is there any way to accelerate the speed of entities on the path? If yes, could you please help me how I can do it? For example, in the attached file, is there any way to accelerate the speed of entities on path 5 and 3 (After passing point A)? I was wondering if you could let me know how I can do it.

 Thanks,

Nadere  

EntitySpeed4.spfx

Link to comment
Share on other sites

As far as I know you can not accelerate the speed of an entity on any link? you should use tricky solutions to overcome this difficulty. 

One of the trick is setting the speed of entities to infinity right after entering node a. then changing the desired speed of path 3 and path 5 to some meaningful values. In the attached model this trick is applied. Note that the assigned values (i.e., Path3.Contents.NumberWaiting) should be replaced by any reasonable values. This assignment is only for illustrative puposes. Note that by this way we made the speed of modelentities limitless but at the same time we limit their speed with the speed of paths.

you can do any other tricks as well... One of them maybe changing the type of the modelentities right after entering path 3 and path 5 (say path3_modelentities and path5_modelentities) by creating a copy of the associatedobject. Be sure to destroy the original one. And then whenever you need to increase their speed you should search their population by a search step and then assign appropriate speeds to them individually. These are the ones that come to my mind at the moment, but you can find some better methods by pondering.

 

EntitySpeed4_me.spfx

Edited by gocken
  • Thanks 1
Link to comment
Share on other sites

3 hours ago, Nadere said:

Thank you so much for your help. I have one more question. Since Path3.DesiredSpeed is equal to 5 m/s. why is the value of the Status Label greater than 5 m/s?  

Thanks,

Nadere

EntitySpeed4_me (1).spfx 280.96 kB · 1 download

Because we assign the speed of path 3 and 5 to PathXXX.Contents.NumberWaiting at assign3 step of process 1 which is triggered whenever an entity enters node A. As I said in my previous post this expression may not serve your purposes. This is only for illustrative purposes. Here the message is you can increase all existing entities' speed (but all of them at the same time) on path 3 and path 5 whenever the process1 is triggered. Also, you can trigger process 1 by using monitor elements (which seems more suitable for your purposes).  For example, using a monitor element you can track the number of entities on each path seperately and whenever this value crosses some treshold value (got congested) you can trigger process1 using monitor element. Note that in your attached model status labels shows how many enitities exist on each path. At the end, change the assignment expression of assign3 step of process1 accordingly.  

Edited by gocken
  • Like 1
Link to comment
Share on other sites

 Share

×
×
  • Create New...