MATLAB Answers

Allocating Resource ID for the resources in Simevents

4 views (last 30 days)
Tashrif Yusuf
Tashrif Yusuf on 18 May 2020
Commented: Tashrif Yusuf on 2 Jun 2020
I am building a model of automated warehouse. This model has vehicles as resource which will serve the orders. When one order is completed the resource is released and is available for the next order. Now, i am brining back all the vehicles to one location but in real time, the vehicle will be at different locations when the order is completed. For Eg: Once order is recieved the vehicle goes to the particular order tote, brings the order tote to the operator and takes back the order tote to the original location. These locations can be different for different orders.
So when the next order is generated, i want to know the position of the previous bot so that i can calculate the distance/time required for it to reach the next order location.
Is this something that i can do with simulink. Sorry if it is a noob question.
Tashrif Yusuf


Sign in to comment.

Answers (1)

Abdolkarim Mohammadi-Balani
Edited: Abdolkarim Mohammadi-Balani on 27 May 2020
I was unable to run your model, but according to your post, I think you need to calculate the distance of the orders to the operator. If this is the case, you need to define the location of the order in the warehouse when the order is generated. I have attatched a simple model where each order has three attributes: (a) order's location in the warehouse, (b) the distance between the operator and the robot, and (c) the order serving time which is proportional to the distance. You can calculate all of these upon entity generation or upon entity entry into the Entity Server.
In the attached model, I assumed that the operator is located at coordinates [0,0,0] and the location of the generated order in the warehouse is a random triplet [x,y,z] in the range of [1,1,1] to [5,5,5]. I calculated the distance using vecnorm function, which calculates the Euclidean norm. I also assumed that it takes 2 seconds for the robot to travel 1 in the warehouse. You can customize these assumptions to match your problem. The model also outputs the attributes, which is accessible via the variable out.SimOut in the base workspace.


Show 2 older comments
Abdolkarim Mohammadi-Balani
I think I am understanding your problem. Correct me if I'm wrong. You want the bot to have access to the information about all of the pending requests and make decision whether or not to serve two adjacent orders simultaneously and bring both of them to the operator?
Tashrif Yusuf
Tashrif Yusuf on 2 Jun 2020
Thanks for the reply. That would be definetely something i want in the future bur righit now my problem is a little different.
Consider a first order placed which is in rack 4 coming to operator 1. I'm considering the origin point as the location of the bin and considering the travel time to the operator and return time to the same point on rack 4.
Now, if a second order is generated which is at rack 3. I'm assuming the bot is available at rack 3. and calculating the time. In real world, the bot has to travel from the previous order location which is at rack 4 in the example case and move to rack 3.
The one way in which i can solve this is send all the bots to a fixed location on the system and calculate the time. But, this won't be a realistic representation of the system.
So, for calculating the distance or the time required i need to know where the previous location of the 'finished order' bot is. I can't figure out any way to do this with the limited knowledge i have on the tool.
Tashrif Yusuf
Tashrif Yusuf on 2 Jun 2020
I found out a small workaround to this problem if the system is having a single bot. I created an array in matlab with the first coloumn the serial number, 2nd, 3rd and 4th coloumn the x,y and z location for the particular order. If i have 360 orders, i created 360 lines with the x,y,z information in an array called order_details.
This is the code i have in entity generator. If the entity id is matching with my order_details array then i give the value of x,y,z. After finishing the order, i am sending it to return path which will be 'yreturn', 'xreturn', 'zreturn' details which i can take from the next order in the queue as shown in the last line of the code.
I believe this will work for a system with only one bot because the same bot will have to come to service the next order. But, if there are more bots in the system i am not sure how to do this.
Hope i was able to explain the issue i have. Do you think there is a way in simevents to solve this isssue?

Sign in to comment.




Translated by