Jump to content

Search the Community

Showing results for 'assign state to batch members'.

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


Forums

  • Simio Public Forums
    • Welcome and How To Become a Simio Insider
    • Simio News and Announcements
    • Simio Product Details
    • Simio-Related Positions Desired or Positions Available
    • Help Getting Started with Simio
  • Forums for Simio Insiders Only (See Public Forums Welcome topic to sign up)
    • SI General Discussions
    • SI Sprint Releases
    • SI Shared Items
    • SI Ideas and Suggestions
    • SI Known Issues and Workarounds
    • SI Performance Tips
    • SI Non-US Cultures
    • SI Student Competition
    • SI Educational
    • SI Libraries and Objects
    • SI Animation and Visualization
    • SI Distributions, Functions, and Expressions
    • SI Simio Tabs
    • SI Experimentation and Optimization
    • SI Functional Approaches
    • SI Industries / Domains
    • SI Types of Simulation
    • SI Emulation
    • SI API

Categories

  • Files
    • Academic Information
    • Product Information
    • Case Studies

Find results in...

Find results that contain...


Date Created

  • Start

    End


Last Updated

  • Start

    End


Filter by number of...

Joined

  • Start

    End


Group


About Me


First Name


Last Name


Company/University Name


OCCUPATION


ICQ


WEBSITE


YAHOO


AOL


LOCATION


FACEBOOK


GOOGLEPLUS


SKYPE


TWITTER


YOUTUBE

  1. Before you start adding state variables to a library object, I suggest that you first familiarize yourself with all of the existing states. One easy way to do this is to instantiate the object (e.g., Worker1) and then go to any expression field and type "Worker." and look at the list. In the case of Worker, there are over 100 states, functions, and properties built-in to the Worker object. Another way is to subclass the Worker, then go to the Definitions tab of the MyWorker object and you can see all of the built-in definitions by category: There is a pretty good chance that what you need is already there. But if not, use the same screen illustrated above and add whatever state (or property, event, ...) that you need. As far as referencing or assigning that custom state or a built-in state, it is done using ObjectName.StateName. For example if you added a state named TimeStartedMove to MyWorker, and you wanted to assign that value, you might assign MyWorker.TimeStartedMove to TimeNow. The tricky part, especially with more complex objects like Workers, is to determine exactly when/how to assign that value. Sometimes you can interact with the model itself to insert an Assign at the correct location (let's say in the Loaded Add-on Process). Or sometimes you might need to override the process logic in your custom object. The SimBits RecordDistanceTraveled and ElectricVehicle are examples to review.
  2. Hello SIMIO experts, I am currently working on a project where I need to assign state variables to a worker and manage these variables throughout the simulation. I'm looking for guidance on a few key aspects: Assigning a State Variable to a Worker: How can I assign a state variable (e.g., a boolean or numerical value) to a worker in SIMIO? I want to track attributes such as availability, task completion count, or other custom metrics. Updating the State Variable During the Simulation: What is the best practice for updating the state variable of a worker based on specific events or conditions during the simulation? For instance, updating the availability status when a worker starts or completes a task. Accessing the State Variable: How can I access or consult the state variable of a worker at any point in the simulation for monitoring or decision-making purposes? Any advice or example models that illustrate these processes would be greatly appreciated. Thank you for your help!
  3. Hello everyone, I am working on a project for class and am having difficulties assigning workers to specific servers depending on what day it is within the simulation. I have 18 workers and 16 servers. Each worker has their own 25 day schedule. On a given day, there is between 5 and 8 workers on shift and each worker needs to be assigned to 2 specific servers and no other worker should go to those servers on that day. However, due to the different schedules, a given worker will not always be assigned the same rooms they were assigned the previous day. Is it possible to assign each worker a specific server by day? Or is there another way that this might be possible? Thanks in advance for any suggestions!
  4. I second this idea. If we can directly assign string name to a object-reference state variable, then use the object-ref state variable as the Object, it will be a lot helpful. String concat is a very good one, for example , ModelEntity go through NodeA, we define its next destination as NodeA_a ....
  5. Hello everyone, I have a server which can potentially have many entities waiting in the input queue. All these entities have different priorities (as a model entity state variable). I want to retrieve these values to then select the highest one and put it on a status label to track this during the run. Is there an option to do this? Regards, MF
  6. You can run the model with 'Trace' turned on. This will trace everything happening in the model, including changes to state variables etc. Turning Trace on also generates a CSV file that you can use to debug. You can also use watch window to debug.
  7. Hello, I need check state variable of object/models in a list. Is there any method to use like a "for loop" Thank you!
  8. Happy new year! One thing that I noticed is that with this model, the server never have a state of "blocked". I increased the processing time of Server2 and added a status pie to Server1. The server 1 is either Processing or starved, but never blocked according to the pie. But it should be blocked part of the time since I increased the processing time of Server2 to force this. It looks like the Server1 only accepts a new item to process if the path between Server1 and Server2 has room for at least one more vehicle. So the time that it should be blocked is considered as part of the "Starved" instead. I tried to figure out why this happens without success. Anyone knows why this happens? I attach the model to the post. Thank you! Input Server1 not blocked.spfx
  9. 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
  10. Hello Vinicius, thank you for you help but I still having problems with the model. I can understand the logic behind of the SimBit "CombineMultipleEntityTypeOntoPallets" but I have some doubts. I change the model adding a combiner, I creted a intergrer model entity state to identify the quantity of containers, and I have a real state to identify the container but I dont know how change the batch logic of the container to each product. In the definitios tab you can see the batch logics. I hope you can help me Best regards. OptimoContenedores3.spfx
  11. 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.
  12. Hello everybody, I'm trying to make this work but I cant Type/Conteiner BinBig BinMed BinSmall Product1 1 1 - Product2 - 1 1 Product3 1 - 1 Product4 1 1 1 I want to make a node where these entities (Products and Bins) are convined in one batch, I try to use a process based in decitions and search.. the file is attached if you wanna take a look on it.. (the product have to be the parent) OptimoContenedores2.spfx
  13. Hi there, I'm very much a novice, but currently leveraging the logic in VisitAllServersInAnyOrder simbit to ensure an entity visits an entity is never reworked more than once. I've updated the model entity with required state variables and created a "MyServer" to create the "HasEntityVisited" etc etc. I'm using the "Candidate.MyServer.HasEntityVisited==False" logic for the selection condition in the output node routing logic. However, whenever I run the model I get the error message "Referenced definition type "MyServer" does not match executing type "BasicNode". I've gone over and over the various elements and compared to the working simbit, but can't identify the issue. Any help would be greatly appreciated. Thanks in advance. Garrett
  14. Hi Fabian, I see two (or more) possible alternatives for solving this. Assuming that the box only receives one type of entity you can: 1. Create a state variable (for example st_CurrentBoxType) and every time an entity enters the combiner you assign the entity type to this state variable. This way, one the box is completed and exits the combiner you will be able to assign it the st_CurrentBoxType. 2. The other way is to execute a search step once the box is full. You can use "ModelEntity.BatchMembers.FirstItem" as match condition to locate the first batched entity, then in the found branch use an assing step to assign the ProdType from the found entity I'm sure there are a lot of ways of doing that... hope this helps saludos
  15. Hello everyone: I am modeling a packaging system by means of a combiner. 12 equal members are grouped in a box (parent). Before leaving the respective source, members are assigned a value (0, 1, 2) as a state variable (ESV_P) to distinguish them by product type. I want the box to have the value of the products state variable. For example, if the box contains 12 type 1 products, the box should be assigned with a state variable ESV_B equal to 1. Any suggestions? Best regards.
  16. Perhaps its a little late, but attached is a possible solution to your problem. This started out pretty simple. The problem was how to specify which server is serviced by which resource. One way to do that is a table. But since its changing over time I chose to use a time-indexed table, that is a table that knows about time and returns different data at different times. In this case, each row corresponds to 12 hours and each column specifies the resource needed by the respective server. As they say, "the devil is in the detail" and in this case the "devil" is that the specified resource may change between seize and release (e.g., seize at 11:59, release at 12:05). Simio doesn't like that and all the easy options re-evaluate the resource expression on release and so may try to release the wrong resource. One option would have been to create a custom server, but that seems to be overkill. Here is a somewhat simpler approach: 1) Add an entity state named MyResource and assign it at the last possible moment before use. This value will be used only for release. The assigned value is drawn from the table using an expression like Table1.S1Resource.TimeIndexedValue.Object. Note that the .timeindexedvalue indicates to get the value associated with the current time. And the .object at the end is used to tell Simio to return that value as an object not a number. 2) Use Secondary Resources - Other Resource Seizes to seize the name specified in the table using the same expression above Table1.S1Resource.TimeIndexedValue.Object. 3) Use Secondary Resources - Other Resource Releases to release the resource saved in MyResource. TimeBasedWorkerSelection.spfx
  17. This helped in some applications, especially use cases where multiple servers are in series and I need the operator to focus on the start or end of the process. Thanks! However, when servers are in parallel the operator tends to run back and forth between them. If I were to assign a higher priority to one line, the worker would focus on that line only. i.e. if he empties the que of parts in the input buffer of Server 1, he goes down to work on only 1 part at Server2 before going right back to Server1. Rather, I'd like for the operator to clear all parts in the que at Server1 before walking down to Server2 and vice-versa. I've tried doing this through process logic however I get stuck trying to evaluate which server the worker is supporting.
  18. Hello, I have two concerns. In one of my small models I want my transporter to make a round and pick up the entities at the different locations and bring them to a destination (Server1). In addition, I would like that the individual times are measured with a state MyModelEntity.TmpStart and MyModelEntity.Duration, in order to calculate afterwards with a transport cost rate the cost for each individual part. Unfortunately I'm getting desperate with this and getting various error messages, does anyone know how to implement this? Best Regards, Gashi
  19. there are several easy ways to do this. 1) Subclass the Resource or Worker object with the only change is to add a property or state (ex PTime) to hold the processing time specific to that resource. 2) Put your process times in a table and reference the correct table row for the doctor that is working. The SimBit WorkerPoolWithEfficiency does something somewhat similar.
  20. Hi! Yes, there is a way. What you could do is use a String.Format expression. This way you can show multiple variables on the dynamic text. On your case something like: String.Format("{0}: {1} {2}{3}: {4}", "Material Costs", MyModelEntity.MaterialCosts, String.NewLine, "ProductionCosts", MyModelEntity.ProductionCosts) should work. As a plus, you could use a state to disable/enable these labels with a button and a process. Something like: Math.If(EnableTxT, String.Format("{0}: {1} {2}{3}: {4}", "State1", ModelEntity.State1, String.NewLine, "State2", ModelEntity.State2), "")
  21. Hello, i would like to know if its possible to track the different values for a user defined MyModelEntity state. In my case, i created different states like MyModelEntity.MaterialCosts and MyModelEntity.HoldingCosts, ...TransportCosts ... etc. The values are summed up in a state called MyModelEntity.ProductionCosts. This state is shown as a dynamic label text in my model, so i can see the production cost value at the actual time. But is it possible to see the different values of the MyModelEntity states that make up the production costs for instance during different periods of times in the simulation or at any time? Because i would like to see the values of my states like MyModelEntity.MaterialCosts at certain times in the simulation. Thank you!
  22. Hello,

    i would like to know if its possible to track the different values for a user defined MyModelEntity state.

    In my case, i created different states like MyModelEntity.MaterialCosts and MyModelEntity.HoldingCosts, ...TransportCosts ... etc.

    The values are summed up in a state called MyModelEntity.ProductionCosts.

    This state is shown as a dynamic label text in my model, so i can see the production cost value at the actual time.

    But is it possible to see the different values of the MyModelEntity states that make up the production costs for instance during different periods of times in the simulation or at any time?

    Because i would like to see the values of my states like MyModelEntity.MaterialCosts  at certain times in the simulation. 

    Thank you! 

  23. A basic photo eye object that can be used with conveyor belts. Photo eye is based on a transfer node object. It collects statistics on time in blocked state, cleared state and throughput. Transfer nodes on entered and on exited add on processes can be used as on blocking and on clearing add on processes. Photo eye has properties to define the delays for on blocked and on cleared. Photo eye will wait to complete on blocked delay to execute on blocked add on process. Similarly, photo eye will wait to complete on cleared delay to execute on cleared add on process. PE_Library.spfx
  24. Hi all, I am building a simulation of a system with multiple separators which MemberOutput nodes two different routing policies can occur: 1. Standard Policy In the 'Standard Policy', each separator has its dedicated transporter assigned to it and entities arriving at the MemberOutputNode can only select the defined transporter. To this end, a DataTable has been constructed. 2. Power Hour policy In the 'Power Hour Policy', operations are shifted into a higher gear. We select a maximum number of three nearest transporters whose ride request is 0 and include them in the DataTable which specifies the Transporter Selection. Entities arriving at the MemberOutputNode can now request rides from any transporter in the DataTable. I tried to reference to a DataTable called 'TransporterSelection.EPT' in the Transport Logic of each MemberOutput Node. Each value in the EPT column is cross-referencing to a DataTable in which I try to assign the MemberInput Nodes as a Node Reference State Variable of the Transporter (EPT). Is there any way to dynamically assign more (or less for that matter) Transporters to a TransferNode? Hope that anyone knows how to do this! Cheers, Toon
  25. Hello River, I downloaded your files. The Gate512 was missing. I removed the information in the "30 Departure.xlxs" file that I can run the model ;-). Generally I understood how it works. Answer to your first question: I think you mean these two ways, right? From the left and from the right. In this case I saw that you used the "Routing Logic" in like all Transfernodes. The Outbound Link Rule is "Shortest Path" and you set the "Node Name" to "Input@Takeoff" Simio is using everytime the shortest link path now. Like in the screenshot below: In my opinion it would be better to set the destination once after the Entity got created in the Source for example :-). There are different ways to do that. In your model I removed all Routing Logic in the Transfernodes and used the Routing Logic only in the Output-TransferNodes of the Sources. In Simio you need only to use one time a SetNode-Step or a Routing-Logic to set the destination of an Entitiy and Simio will follow the paths or travel in the FreeSpace. You can use for example a NodeList with 2 different destinations and this Routing-Logic: With the "Selection Goal" Random Simio will randomly choose the destination from the NodeList. I uploaded you your model with the changes as an example: Problem on the taxiway version 17A.zip What did I changed? 1) I removed the Routing Logic in all TransferNodes. 2) I added new Routing Logic to the TransferNodes of the Output-Node of the Sources. 3) I added a NodeList with 2 new Nodes. 4) In the two new Nodes I used a Nodes-Entered-Process and a Transfer-Step to transfer the Entity to the Input of the Sink. Answer to your second question: You can change the destination of an Entity any time. In the Path (Link) you have a function called "NumberTravelors" for example to get the number of travelors currently on this path. So you can use a Expression like "Path123.NumberTravelors < 2". This can be used to decide if a way is full allready that the other way get selected. Or you can use a Integer-State and count up and down. I would use a Node-Entered-Process in the last possible node with a Decide-Step and two SetNode-Step in this case :-). I hope my answer will help you. When you have any other question, you are welcome! Best regards Pascal
×
×
  • Create New...