ow121912 Posted August 7 Posted August 7 Hello, I would like to pay workers a fixed wage regardless of their current state. In my model, each worker performs both Transporter and Resource roles, so I have set the Transport Cost Rate, Idle Cost Rate, and Usage Cost Rate all to USD 1 per minute. However, after running the simulation for 1 day (1,440 minutes), I found that some workers were not charged $1,440 as expected, but a different amount. After investigating the issue, I believe this is because the time a worker spends moving to a pickup location in response to a transport request from another server is not counted in any of the cost categories. In this situation, is there a way to configure the model so that the worker's wage is calculated based on their total presence time in the simulation, regardless of whether they are idle, transporting, or busy? Thank you in advance for your help.
ViniciusF Posted August 13 Posted August 13 You are correct. When they are moving to pickup the cost is not considered. Easy way to verify is to change the velocity of the vehicle to a really high value. You'll get the 1440 as expected. I would probably not use Costs directly. Instead, I would create a Process on Run Ending. Search through the population of vehicles and save the values accordingly, like: vehicle.resourcestate.TotalTime(0)*2 -> would give you 2 USD per hour on a given state, in this case state 0 (idle). vehicle.resourcestate.TotalTime(1)*2 -> would give you 2 USD per hour on a given state, in this case state 1 (busy). If you need to see these values separated, you would need a matrix to save these values depending on the number of the vehicles. Or, you subclass the vehicle and create a vector where each element of the vector would save each cost. Else, you just keep adding to a variable for each vehicle on the system. There is probably another way manipulating the cost inside the process of the vehicles, or using a monitor verifying resourcestates changes on a subclassed vehicle. 1
ow121912 Posted August 13 Author Posted August 13 Thank you very much for your response, Vinicius. Thanks to your reply, I was able to confirm once again that my assumptions were correct. For now, I have designed my model’s logic to minimize pickups as much as possible, which allowed me to create a simulation that matches the expected values. However, this is only a temporary measure, and since it could cause problems later, I think it would be better to revise the model according to your suggestion. That said, in my current model, the vehicle’s travel speed has been implemented to match the real-world model, so changing the vehicle speed is not feasible. Therefore, I tried to implement the method you suggested using the Process approach. However, while doing so, I encountered a problem: in my model, according to the day pattern, the wage rate during certain hours should be 1.5 times higher than the regular wage. I realized that implementing this wage adjustment is not easy with your proposed process. Could I get your advice on how to address this part? Once again, thank you very much for your response.
ViniciusF Posted August 14 Posted August 14 That can be exponentially harder if: the vehicles have different wages between them; rates differ from day to day. Considering the simple case where the vehicles have the same wage rate and all days have the same wage rate (but rates changing during certain hours), I would suggest you: Create a table with the a column for each state of the vehicle (idle, busy.. etc) and 24 lines (one for each hour of the day). You can create only one column if the wages are the same for all states. Considering the first case, it will be something like: Create a Process On Run Initialized. Search through the vehicles populations. Put a delay of how often you want to verify its state and an assign that will add the wage to a variable that you want based on the current ResourceState, like: DateTime.Hour returns the hour of the day. At the beginning of the day it returns 0, and will add 1 for each hour. Since in Simio tables starts on row one, I had to add one. Here I was verifying every 5 minutes, so I had to divide the value by 12. (60min/12) = 5min. You could verify it more often to be more precise also, but you will have to divide the value accordingly. You don't need many decides to verify the current ResourceState, just skip the assignment if it is not the right ResourceState.
ViniciusF Posted August 14 Posted August 14 You could improve this with a monitor inside a subclassed vehicle verifying the ResourceState change and executing a process to add the wages aswell. But for now, I think the solution above is fine. 1
ow121912 Posted Friday at 08:23 AM Author Posted Friday at 08:23 AM It seems the approach I had in mind was much more complicated than necessary. Thanks to your suggestion, I was able to resolve the issue. After applying your method, it worked seamlessly in my model. Thank you very much for your help. 1
Recommended Posts