how do i fix this error about pallet rack network? - anylogic

I am creating network with different pallet rack and paths and the model gives me this error :"Pallet rack root.palletRack_360: couldn't find the path for the cell #0".Why?
thanks for the help.
here the model:https://1drv.ms/u/s!AhfvS-jv8ukShIRtDNG-DUolG-Z6Ow?e=SBUOph

Likely, you have accidentally created more than 1 network. However, agents can only navigate within 1 network. See how many networks you have by checking the "Projects" view under Main->Presentation->level
Below, I accidentally created 2 networks:
Combine items from different networks by ensuring that every path is connected properly

If there's a Path point inside the aisle (which turns green when in network) of the rack, then you may get this error. Try keeping just the continuous path without any points in the aisle.

Related

AnyLogic: How i know i have multiple networks and solve that problem?

The agent is not following the outlined path for moving to its destination
because destination is in different network.
How i know i have multiple networks and how to avoided that. So agents move on the path.
You can get the number of networks by calling getNetworks().
You can loop through them using
for (INetwork currentNetwork :getNetworks()) {
// do something with currentNetwork
}
Check my current video series on making networks a lot more powerful, including the problem of having several networks: https://www.benjamin-schumann.com/blog/2022/8/6/taking-control-of-your-network-agent-based-pathfinding
to see if you have multiple networks, you can check on the projects panel
Here you will see all the networks you have, and what nodes are contained inside each network.
AnyLogic doesn't know automatically how to connect these 2 networks if you want to do it, so you need to have attention to details when you build your networks.
if your agent move between nodes that are not in the same network, you will get unexpected results
When paths and the destination **node" do not connect with each other, then the agent does not follow the path and uses the shortest path to reach its destination.
A Network is the collection of paths and nodes that we create on canvas.
If we create multiple collections of paths and nodes and do not connect one collection with the other, then they act as separate networks.

Anylogic - forklifts being stuck when loading storage

I am using forklifts (free-space navigation type) to load pallets into storage. The storage has 1 rack, 5 bays, and 4 cells deep in each bay. It is of the stand-alone type. At some stage two forklifts will get stuck as shown in the image below.
I don't believe this is coding issue but more to do with the Anylogic collision behaviour. I have tried varying the 'Min distance to obstacle' value from 0m to 3m. I have also tried setting the size of the forklift as well as leaving that unchecked.
Does anyone have any tips on stopping this from happening? Please let me know if more information is required.
Thanks
Forklift Fleet settings:
There is a conflict-resolution setup that you can use to solve those (inevitable) gridlocks. Use the "TransporterControl" element and play with it:

How can I use rackPick block to seize more than one item at once? - Anylogic

I'm developing a project with Anylogic and I have an AGV with a Kuka cobot on top of it (a sort of mechanical arm used to pick item from a shelf, in this case) which should pick some items from a rack store. I would like the cobot to pick more than one single item at once.
The blocks I already put are shown in the picture and I thought that specifying "seize whole set at once" in the rackPick block would have helped but it did not.
Could you help me, please?
Thank you in advance.
The RackPick logic is agent-centric, i.e. the items in the rack are the active entities. They, essentially "pick themselves", optionally using your robot as a help.
So if you want your robot to pick several, it is best to batch your agents together before putting them into a rack (using Batch) and then let your robot pick that batch agent. You can unbatch into the original agents afterwards.
PS: That "seize whole set at once" option is again from the agent perspective: if it would need several resources to be picked, then this option would have an effect. In your case, with only needing 1 robot, it is meaningless

Connect 2 sources from different processes

I would like to connect 2 sources from different processes. In the second process it should pick my pallets from a pallet rack where I stored them in my first process flow.
Process 1: Store the pallets into my pallet racks.
Process 2: Pick this number of pallets to a certain time.
Can I connect this processes/ the both source blocks? Its easier for my project to seperat this process.
I know that it is possible with enter and exit but I would like to know if it is with source too
well... a source generates a completely new agent, and the enter block doesn't, so that's why you should use an enter block instead...
BUT theoretically, you could eventually remove the agent with a sink and create a new one, identical to the previous one with a source... but I don't see why you would do something like that besides a desperate attempt to save memory.... bad practice at its peak.
The real reason why you want to do this, is that you are not aware of the tools that AnyLogic has available to solve whatever you are trying to solve... maybe you are looking for a split block and separate your agent into 2 different processes? Doesn't seem so, since process 1 occurs before process 2, so i dont see why you would even want to separate them

Jib crane Has Different Space

Different spaces what does it mean?
This model will move input source material to different nodes.
The agent 1 and the crane com.anylogic.engine.markup.JibCrane#2ffe5f00 have different spaces
Make sure the agents you push through the "moveByCrane" block are of type "Material Item". You can set that in the agent properties:
Select location of arrival and node for the source. Model working perfectly.