Transport gets stuck - anylogic

I'm implementing a model in which many transport (Transport fleet, Material Handling library) move in the same network.
I've got some limited access paths ( limited to 1 transport).
The intersection between two or more path are nodes; in this way if a path is already occupied it will stay in the node until the path is free again.
The model seems to run until some transport get stuck (see screenshot).
At the moment Transport are able to resolve collision, but if the Resolve collision parameter is false then when transports get stuck a collision is detected.
I think transport cannot choose who can be the first to can cross the path (my thought, any suggestion is appreciated).
It is not a constant problem, it can happen at different times of the one year simulation or not happen at all.
What's the problem? How can I solve it?
Thanks
Transport stuck image

The problem is that the underlying algorithms cannot possibly work for any situation or foresee any eventuality.
Either you use the build-in resolution or you have to apply custom intelligence, route-finding and decision-making, which is possible but not trivial :)

Related

Is it possible to change our NDIS LWF's altitude on the LWF stack?

We have a possible conflict with another NDIS LWF driver, and was wondering if there is any concept similar to minifilter's altitude in NDIS LWF, so we can change our altitude to see if it resolves the issue or not.
We sometimes do the same thing with our minifilter, when there is a buggy minifilter below us that doesn't properly handle some of the requests that we generate. So I was wondering if there is anyway we can change our altitude and go above the possible problematic LWF, thus causing that driver to not receive our self made Indicated NBLs, to see if it solves the problem or not.
The way to change the order of LWFs is to change the FilterClass. If two LWFs have the same FilterClass, then their relative order is unspecified.

Avoid Exceptions after a train collision in Anylogic

I need to create a model of a simple train station where I want to have the "unwanted" option to have trains collide without the model crashing with one exception. Is there any chance to avoid the model crashing maybe stopping the two trains colliding when it happens (or just a moment before)?
Thanks a lot!
Drag and drop Rail Settings and it has a few things for conflict resolution.
On car hit car section allows you to type in any code.
Here are the local variables that you can use:
You can also watch this video from AnyLogic: https://www.youtube.com/watch?v=ERvdz0w_Zgk
You can also simply use the outHit port on the TrainMoveTo block:
Best do the simple rail-model step-by-step tutorial (hump yard) as it shows how to use it

Pd-GEM - using multiple, separate particle streams

I'm working on a live music visualisation project, where I am using a particle stream to visualise each channel of audio (vocals, guitar, percussion, bass) which are each coming from a looper.
I have the visualisation aspects working - I do envelope tracking in a separate pd instance, send the envelope details via udp to my gem instance, which then uses that to vary the size and colour of multiple particle streams.
The problem I have is that I am trying to set the origin point of each stream, and they are either interacting or they are controlling the origin of a different stream. The part_velocity also seems to be having a similar issue.
Each particle system has it's own gemhead (which I init as say [gemhead 20] so each one is unique), but changing the XYZ for its [part_source 1 point] object seems to affect a stream that's in a different gemhead chain.
I have also moved it off into an abstraction, where I name its head [gemhead $0] and I am having the same issue.
This unanswered thread from years ago shows two other people having the same problem, but no answers.
Here's a portion of my main patch which calls the abstraction:
And this is the abstraction:
Am I missing something simple here, or is there perhaps a bug in that one of the part_xxx objects is not checking which gemhead list it's in? Note that there are other gemheads in the main patch, some have an argument, some don't, but they're doing other stuff.
Oh yeah, and input is welcome on the somewhat dumb-looking way that I'm preserving state here, I've NO idea what the patterns are here, and cannot for the life of me find any good advice on it!

Instantiation of equation

I am trying to model a pump system. The system consists of a controller, two ON/OFF valves, and a swept volume acting as a chamber. The controller is responsible for the state of the valves as well as filling the volume and pumping it.
When connecting all the components together, i started getting errors saying " Failed to instantiate equation between components ", for example between the swept volume and the first valve. I tried to delete the valves from the whole system and connect the piston directly to the source, but i then got an error saying "Failed to instantiate equation .." between the piston displacment and its input.
I couldn't understand where is my problem to be exact. Is it with the model themselves that they cannot be connected together or am i missing something else?
I am not an expert in modelica obviously, but i got the basics of course.
To make things clearer, here's the link to my model:
https://www.dropbox.com/s/g9dr40jame3lk2n/pumpsystem.zip?dl=0
Any help would be appreciated.
OpenModelica complains about obsolete connections. You have many connections in your model between components which don't exist anymore.
For example:
connect(ChamberController.PistonDisplacment, sweptVolume1.flange) annotation(...);
connect(close.on, ChamberController.deflate) annotation(...);
To remove these connections, simply click the link in the Messages Browser, which will bring you directly to the correct position in the code.

Which file to extend for customized messages in veins? What is the purpose of AirFrame11p.msg?

I'm new to SUMO, Veins, OMNET++ and simulations with a bit background of networks. I have successfully setup environment and run veins 4.6 demo application. On google found that unlike RSU, Car modules are added on the fly.
In demo example car nodes send Airframe11p message, i'm not getting where this message is being populated because in TraCIDemo11p.cc methods (onWSA, onWSM, handleSelfMsg, handlePositionUpdate) we are dealing with WSM message types and BaseWaveApplLayer::checkAndTrackPacket methods ensures that message being sent is either BSM, WSM or WSA.
In veins\src\veins\modules\messages AirFrame11p.msg file exists but on finding references of "AirFrame11p" in project, matches are found in AirFrame11p_m.h and AirFrame11p_m.cc only. If demo is not using these files then for what purpose these files are added? and from where simulation gets the annotation of AirFrame11p.
I'm trying to simulate a car accident scenario without RSU using V2V communication, have replaced demo map with mine, generated random routes, now trying to remove RSU from demo application and exploring to send customized messages (including geo location, speed, direction, time etc) to nearby vehicles in specified range e.g. 100 meters using WiFi direct.
If i'm confusing something then please guide me. Thanks.
The short answer: The AirFrame11p message is a lower level message that encapsulates the upper layer messages. Just use the application message type that is appropriate for your application. If you want to replace the physical layer with WiFi direct instead of 11p, and you're starting from scratch, you're probably in for quite a bit of work, since the VEINS PHY implementation is very intricate. If you have an existing implementation of WiFi direct, it may be worth investigating the integration of VEINS' TraCI implementation with that code.
Encapsulation in VEINS
You are correct that the message types at the application layer are more diverse -- these message types (BSM and WSM) are used to encapsulate "application" behavior; it's just not very well visualized in the simulation execution. You can pause the simulation and look (for example) under scheduled events, where the queued packets can be examined visually.
Unlike regular networks, where such messages would be packaged in IP, MAC and PHY encapsulations, VEINS uses the following encapsulation process: BSMs are packaged in MAC frames (80211Pkt), which in turn are encapsulated by AirFrame11p signals. So basically, you should choose the correct message type for your application.
Footnote regarding application behavior:
Technically speaking, these messages would be more correctly placed at the Facilities layer (see e.g. ETSI's spec), since the periodic exchange of messages provides data stored in the facilities layer, which is then used by cITS/VANET applications that run on top. If you need this, look at Artery (as Ventu suggested in the comments).