-
Posts
40 -
Joined
-
Last visited
-
Days Won
8
ViniciusF last won the day on September 7
ViniciusF had the most liked content!
About ViniciusF

Personal Information
-
First Name
Vinícius
-
Last Name
Freitas
-
Company/University Name
Paragon
Recent Profile Visitors
ViniciusF's Achievements
-
Rework logic add on process issue
ViniciusF replied to m.soomar1255's topic in SI General Discussions
You have to take some care though. Is it possible that entities rework more than once? If it is, the solution above is fine. If it is not you would need to take some care on how you setup your link weights. -
Providing wages independent of what the worker is doing.
ViniciusF replied to ow121912's topic in SI General Discussions
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. -
Providing wages independent of what the worker is doing.
ViniciusF replied to ow121912's topic in SI General Discussions
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. -
Providing wages independent of what the worker is doing.
ViniciusF replied to ow121912's topic in SI General Discussions
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. -
How run a process when statistics are cleared?
ViniciusF replied to WD0001's topic in SI General Discussions
Hi! Just put a Assign step changing the state of your variable after you clear the Statistics. You can keep the monitor to trigger what you need. -
Routing group availability depends on the entire route
ViniciusF replied to WD0001's topic in SI General Discussions
Hi, What I like to do on these cases is to use Resources on a clever way: Create two dummy resources (one for each server). Set the capacity of those resources to how many entities you would allow on the respective conveyor. When an entity hits the Transfernode1, you seize from a list of the two dummy resources. Use a Set Node step to redirect the entity to the according Server depending of the Dummy resource chosen. When the entity leaves the Server (or enters the Server, depending on the logic), release the Dummy resource. You would need only to make the Dummy resource fail together with the server, or just put the failure on the Dummy resources instead of the server. Shouldn't make a big difference depending of what results you would need. -
Using a object reference state variable named "Test" on the ModelEntity: (Assign step was just ModelEntity.Test -> Server)
-
-
Node.Entered event fires before the node is actually entered?
ViniciusF replied to WD0001's topic in SI General Discussions
I came across with that before, and it is a bit confusing. I'm using version 15.240.27700 I learned that you shouldn't use this Entered Event to control the entity either. For example, If you put a delay on it, the entity will not stop for the delay time. If you trace it, you see that Entered Event is fired, but the process is not executed right away. Instead EnteredAddonProcess is executed before. Not only EnteredAddonProcess is executed before, but the entire logic is executed, so it executes ToOutboundLink before executing the process activated by the EnteredEvent. The reason it works on EnteredAddonProcess is because the token stops there, executes the addon process, then continue. With the Entered Event, the token does not wait. -
Entities not Unloading the Transporter (urgent)
ViniciusF replied to mateus's topic in SI General Discussions
Ok, just to be sure: Entities on stop1 cannot choose stop1 as a destination, entities on stop 2 cannot choose either stop1 or stop2, and so on. Is your logic already doing that? Personally, I would create a node just before each "Stop" node (which I'm assuming are the nodes of the sources). I would drop the entities there, sending them to their sink (you can use by link weight here, with "!Is.Vehicle" so the entities go to the sink). If the process of loading/unloading is necesseraly simultaneous you need to take some care with what happens if the bus arrives full, but has some entities to drop/pick-up. If you want, dm me with the model, I could help. -
Retrieve input queue entities' attributes
ViniciusF replied to Marcel Favereau's topic in SI General Discussions
Use a search with Maximize Expression. The queue should be ServerX.InputBuffer.Contents and the expression: Candidate.ModelEntity.Variable. -
Hi, there is a simple approach you can use. Use Connectors between the queue server and the desks. At Buffer Logic of the Desks, change the Input Buffer Capacity to 0. Create a List with the Input nodes of the seven Desks. On the Output of the queue server change Entity Destination Type to Select From List and the goal to Smallest Value. Keep the default expression. It should work fine.
-
Hi, You won't need batch logics of the definition. Just the combiner is enough. I made a simplified version of your model. Producto1 requires 1 med and 1 big, while Producto 2 requires 1 small and 1 big. Pay attention to the process that I created at TransferNode1, you'll need to adjust it for the Producto3 and 4. Watch the Combiner Object aswell. Hope it helps. ExampleSimplified.spfx
-
Hello, I wouldn't use process for this one. There is a simple approach that you can use by modifying the SimBit "CombineMultipleEntityTypeOntoPallets". You'll need 3 ModelEntity Integer States to identify the quantity required of each Bin according to the Product. Let's say ModelEntity.Big, ModelEntity.Small and ModelEntity.Med. You can modify "Ops_Exited" step to assign those quantities. For the Producto1 for example, you'll have ModelEntity.Big == 1, ModelEntity.Med == 1 and ModelEntity.Small == 0. A little tip: you can use "Is.Producto1" (or "Is.Producto2", etc) on a decide step to identify which Producto is it. Now on the Combiner Object, follow the Simbit and change the BatchQuantity, to ModelEntity.Big, ModelEntity.Med and ModelEntity.Small. This should work.
-
Check Capacity before routing entity
ViniciusF replied to Aljonator's topic in SI General Discussions
Hi, Usually what I do in cases that I want to check capacity before sending is create a "dummy" Resource. This way I seize its capacity before sending the entity forward. If it has no capacity for a given entity, the entity will just wait until it has capacity.