msalemip Posted September 27, 2016 Share Posted September 27, 2016 Hi I am using a worker as a transporter as well as a service provider at one server. I want to know how I can access the worker ride when the worker is transporting someone. For example assume the worker is transporting one entity on a path, I want to create a process for the worker that enters the path, and get access to the ride of the worker (the entity which is currently riding using the worker). Any help is appreciated. Thanks; Link to comment Share on other sites More sharing options...
gocken Posted September 28, 2016 Share Posted September 28, 2016 u can search the contents of ridestation by using search step... Link to comment Share on other sites More sharing options...
msalemip Posted September 28, 2016 Author Share Posted September 28, 2016 I am not sure how I can search the content of a ridestaton.I do not see this feature in the search step. In general, I wanted to use a decide step and decide whether the ride (entity) on the worker has a specific state variable and based on that change the speed of the worker. But I can not access the ride on the worker. I thought it should be easy but I do not see the option. Link to comment Share on other sites More sharing options...
gocken Posted September 28, 2016 Share Posted September 28, 2016 You should use search step. In search step set the Collection Type to "queueState" and Queue State Name to "Worker.RideStation.Contents". Then you should enter matching criteria (what you are looking for, any state of the entities on ridestation). If the search is succesful then you should change the speed of the worker by an assign step otherwise nothing more to do. Link to comment Share on other sites More sharing options...
msalemip Posted September 28, 2016 Author Share Posted September 28, 2016 Thank you so much for your reply. But in my Simio, there is no "worker.ridestation.contents" option in Queue State Name. The only available options are: worker.allocationQueue worker.batchmemeber worker.batchmemeber.volume worker.batchmemeber.volume.rate worker.batchmemeber.wight worker.batchmemeber.wight.rate worker.visitrequestqueue Link to comment Share on other sites More sharing options...
dsturrock Posted September 29, 2016 Share Posted September 29, 2016 To start with, if you place the default worker, you will see a green line between his hands - that is the ride station (e.g. the queue state animating the contents of the station where entities ride). If you click on that line in the properties window you will see it identified (in the context of the worker). You can cut and paste that, or simply retype it into the search field. It would look like Worker1.RideStation.Contents where Worker1 is the instance name of the object you placed. In Simio pull down lists, not every possible option is always listed. You can try typing something you think should be acceptable and Simio will tell you if it is not. Looking back a couple posts, I see what you actually wanted to do was decide something based on a state of the riding entity. If you only have a single entity or you are only interested in the first entity, then there is a much simpler way than using Search - just use dot notation to navigate the object hierarchy from the worker to its station to its first entity to its state. For example to decide based on priority > 5, on the condition field of a Decide you might use: Worker1.RideStation.Contents.FirstItem.ModelEntity.Priority > 5 Link to comment Share on other sites More sharing options...
gocken Posted September 29, 2016 Share Posted September 29, 2016 a very good expression --> Worker1.RideStation.Contents.FirstItem.ModelEntity.Priority > 5. and It would be better if the user was allowed to search entire contents for the condition expressed. For example: Worker1.RideStation.Contents.ItemAtIndex( index ).ModelEntity.Priority > 5 expression should return true or false after the contents of the ridestation is checked for the experssion in one go. Worker1.RideStation.Contents.ItemAtIndex( . ).ModelEntity.Priority > 5 --> "." instead of "index" means all of the contents should be considered for the expression to be true or false. Once the expression is justified it returns true else false. Link to comment Share on other sites More sharing options...
dsturrock Posted September 29, 2016 Share Posted September 29, 2016 I think "Worker1.RideStation.Contents.ItemAtIndex( index ).ModelEntity.Priority > 5" should work fine as long as index is a valid integer. You could use that expression in a process loop or a Math.If() expression. But as soon as you start indexing through a series of those, perhaps the Search would work better. Link to comment Share on other sites More sharing options...
msalemip Posted September 29, 2016 Author Share Posted September 29, 2016 Great. Thank you for your explanation. Link to comment Share on other sites More sharing options...
Recommended Posts