Jump to content

Search the Community

Showing results for 'original token'.

  • 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. Just take a look somehere in help or documentation about Evaluating Transport Request, if token used in this process (so you have to search for tokens as well) is assigned value 0 or less, the entity trying to reserve transport on this vehicle is rejected and have to wait for another try. This is just a simple model, for production use (models with multiple locks) it make a good sense to use object approach as David showed in Elevator Simbit. That way you would be able to have logic in one place.
  2. OnRunInitialized could have multiple Execute steps with the Token Wait Option of None. So each set of servers would have its own process and its own repair time state. Or, as you seem to have discovered you can bypass the OnRunInitialized option, simplify the processes and simply have a Timer dedicated to each server group and that timer is what initiates the process.
  3. Hi, The execute step you use to run your car's acceleration increment process is not a "continue" process so the token that enters the execute step in the "EntryRoundaboutOrStop" process waits for the executed process to complete (ie. your acceleration to reach its maximum) before continuing. Because this is done on the "OnEntered" it causes your vehicle to wait at the node for all the processes run by the OnEntered add-on process to complete. This differs from using the "OnExited" add-on process which doesn't wait for it's processes to complete (due to the literal departure from the node onto a path/station being required to execute the "OnExited" add on process). I suspect having used the OnExited instead of the OnEntered in your previous model is what caused the acceleration to work properly. I hope this helps. Michael
  4. One way to do this is by using a Process. Create a table with a string column (PartType) and an expression column (ProcessingTime). Create a new token(MyToken1) in Definitions Tab with a real state variable: Index. Set the process to be triggered by a timer which is set to 24 hour interval and set the token class to MyToken1. Use a Search Step with Collection Type: TableRows, Table Name: Table1, Limit: Infinity, and Save Index Found: MyToken1.Index. On the Found branch use a Create step to create a new object Entity Type: Parts. On the Created branch use a SetRow step with Table Name: Table1 and Row Number: MyToken1.Index and a Transfer Step. Set the Server Processing Time to Table1.ProcessingTime. Rename the DefaultEntity parts. The entities are all the same Entity Type. You don't need a source.
  5. Option 1: The way I often solve it is to create a high-priority 3-hour job that tries to seize the server at the time when it should go down. As it is waiting in the front of the priority-based queue, it will keep the server busy for 3 hours after the previous job has finished. Statistics will not show true idle time, of course... Option 2: Same high-priority job that triggers an add-on process that takes the server off-shift (or decreases capacity by one); after 3 hours, the token increases the server capacity again. Job time for the job that carries out the trigger is e.g., 0.1 second. Assign step: Server.CurrentCapacity := Server.CurrentCapacity - 1. The advantage over a Timer or a schedule change is that you can control what happens with your own 'helper' Entity. Make sure it is a different Entity instance to avoid contaminating the entity statistics of your 'real' entities. Alexander Verbraeck Professor of Systems Engineering and Simulation Delft University of Technology, The Netherlands
  6. solution: 1) file ---> "entity based routing logic on the same path (1)" is the solution to the original problem... 2) file ---> "entity based routing logic on the same path" is the suggested logic to what you want to do. I believe the solution to the problem should be the second one, but still it is up to your problem's logic. choose one of them... Entity based routing logic (1).spfx Entity based routing logic.spfx
  7. You had several different problems here. First of all, your sequence was incorrect - it included the output of server 1 and your entity never moves there by a sequence (it just emerges there after visiting server 1) Second you need to seize a vehicle, move it, then release it. No requests are processed while a resource is seized. Third, the entity was waiting for the move to complete before it started moving. I assume that the point of this was to have them concurrently move toward each other. To make that happen 2 things must be overcome. 1) All add-on processes wait for completion before the executing entity proceeds with other actions, 2) The Move Step by definition holds the token until the Move is complete. Both of these are overcome by creating a second process which is Executed with the Token Wait Action set to none (no wait) Finally, the return to home option on the vehicle conflicts with your intent for the vehicle to move somewhere and wait for the entity. it can't both wait while idle and return to home when idle.
  8. Hello! I have one doubt that I would like to clarify: I have 2 entities that travel grouped (1 is the member and the other the parent). There is one point at my model on which I want to separate them and at the same time copy an array of values from the parent to the member. At the momemt I'm doing this by using a state to hold the information from the parent when he enter the separate and when the member leaves it I copy the values from the state to the member. Untill now everything's fine but I'm a little affraid that it can result in some conflicts when many entities pass through the Separate at the same time... So I would like to know if anybody has any suggestions of how to pass the values directly without a temporarilly state? Just to be clear I'm trying to do something like this: Member.ArrayOfValues[index]=Parent.ArrayOfValues[index] which obviously doesn't work since this process is being executed by a token of the Parent... Thanks!
  9. Hello, I am using the latest 106 Simio version with a student license. And I am making projects but I don't wish to show my author name. The problem is that the author automatically filled in with my name. I deleted it and pressed enter, but it appeared again. I also tried right-clicking then reset but it doesn't work. Is there a problem of my Simio or it is designed this way that you cannot change the original author? Thank you!
  10. A quick work-around is to set the add-on process to consist of a single execute step, with Execute -> Advanced Options -> Token Wait Action set to None (Continue). Have that Execute step execute the same seize-delay-release process from my first comment, and you should be able to get concurrent seizing of both the secondary resource and the server during processing. With your approach, it seems like the seize process is at the model level, meaning that the model object is attempting to seize (and release) the resource, rather than the server or the entity. The error message indicates that the release step is trying to release a quantity (1) of resource, but it doesn’t have any quantity of that resource seized. You could try running the model with the trace window open to determine how the model is behaving (i.e. what is trying to seize what, and when). -Adam
  11. The difference between Copy to Edit and Subclassing from the library is that when a change is made to the original object's definition, an object that was copied is not updated with the new changes in the original object's definition. Whereas a subclassed object will inherit the changes to all processes that were not "overridden". There are some items in the object that are greyed out and cannot be overwritten when it’s been subclassed. In this case, the only way to change these things is use the Copy To Edit functionality.
  12. Just a note that in Sprint 101, the Flow Library Tank object has been enhanced to provide a 'New Inflow Entering' add-on process trigger as well as new built-in 'On New Inflow Entering' state assignment options. The 'New Inflow Entering' add-on process trigger occurs when a new inflow is starting to enter the Tank object, which may be either the first inflow into an empty tank or a change in the inflow entity type into a partially full tank. Note that a token executing this add-on process will be associated with the flow entity that is entering the tank. Also, if the logic of the specified process includes any delays, then the inflow rate into the tank will be halted until the process has completed. You will be able to use these new features to easily assign state values of a flow entity entering the tank, such as its Priority state value.
  13. 1) Add a Timer element. Initially Disabled. Specify the Maximum Events = 1 and the Time Offset as a variable (or the constant time if that is the situation). 2) In the process with the Wait step, right before the Wait, assign the Enabled state of the Timer to True to start it up. 3) In the Wait step, wait for either your primary event, or the Timer event, whichever occurs first. No need for a second process. Just a combination of a Timer and a Wait step, with the Timer's event being one of the possible events that the Token may be waiting for.
  14. The Server is currently set up to look at the table to find it's processing time, but you haven't told the server which row to look at in the table. Therefore, you need to put some logic into the model to check the current value of the model property and based on that value, set the correct row in the table. One example for how to do this would be to create an Add On Process in the "Run Initialized" Add On Process Trigger of the Server. In this process, you would place a Search step that searches that Table. It would have a Match Condition of rpUserOption == tabUserOptionInfo.UserOption so that it finds the row that matches the current value of the model property. And then you would create a new State variable and put that State variable in the Save Index Found property of the Search step. This will save off the row number. Place a Set Row step in the original segment leaving the Search Step and put the State Variable into the Row Number property so that you are setting the correct row for that Server object. Thank you
  15. Hi All I have a recurring problem that I don't seem to be able to get to the bottom of. I think it revolves around the creation of a second token in the Search Step when found. I have a situation where I need to search multiple queues and depending on the outcome, transfer an entity from one queue to another queue. Irritatingly, the error is intermittent as the process will work sometimes but not for others. I'm guessing there is some kind of Race condition occurring but my understanding of Tokens is still a work in progress! I have been wrestling with this error for a while now and would greatly appreciate any advice. I have attached as much info as possible which hopefully explains the issue. Thanks............Dave
  16. If the vehicle arrives at a destination (which was the entity destination), you can change the destination of the entity by first using a Search step to search the Collection Type of 'QueueState' and the Queue State Name of 'Vehicle.RideStation.Contents' (in the 'Entering' add on process of the node it is in, for example) - leave Search Type as 'Forward' and no Match Condition - it will find the entity (if there is just 1) that is riding on the vehicle. Then, from the Found exit, you can use the SetNode step to set the entity destination to the new location you want it to go to - also, use the SetNode to change the vehicle destination to that same location as well so it doesn't continue on its way to the original destination, but will also drop off the entity at the correct location. See small example attached. ChangeEntityDestination.spfx
  17. Thanks for the advice and for getting back to me so quickly - I'll try a delay in the original branch
  18. I just updated the library in the original post and included some examples. We welcome your feedback.
  19. Many thanks for your reply. I do have a step assign after the search step. That I had. I tried modelEntity.Population.Name == tabPartsInfo.EntityType.Name but I got the following error (at the bottom). I am attaching the model. It is kanban model and the problem is related to the process procAssignColorStringAndPicture which is called from input@MachiningGears Many thanks for your guidance. Error Item: modelEntity 'gear.63' A runtime error was detected at time 0.0 Hours at the following process step: Object: Model Process: procAssignColorStringAndPicture Token: Token.11 Step: [search] SearchPic Step Property: Match Condition Error evaluating the value of property 'Match Condition'. Item: modelEntity 'gear.63' A runtime error was detected at time 0.0 Hours at the following process step: Object: Model Process: procAssignColorStringAndPicture Token: Token.11 Step: [search] SearchPic Step Property: Match Condition Error evaluating the value of property 'Match Condition'. Invalid operation because types of operands must match. Both must be numeric or string. modelo_kanban_20131121.spfx
  20. Hey guys, first of all, thanks for the contribution on these forums, I have learned a lot from the SimBit solutions along with forum threads. Herewith my first post/question: Based on the Vehicle Fixed Route SimBit, I've set up the following model: There are specific pickup/drop-off locations in each of the vehicles' fixed routes. Entities entering at the various Sources will each be allocated a destination location Sinks randomly (ie. at Source_1 Output Node the destination is randomly selected from a DestinationList, which contains all destination nodes). Enities in the right-side loop are only picked up by Vehicle 1, and entities in the left-hand loop are picked up by Vehicle 2. Sequence Allocated to Vehicle 1: Output@Source_1 -- Input@Sink_1 -- Input@Sink_3 -- Input@Sink_5 -- TransferNode1 Sequence Allocated to Vehicle 2: Output@Source_2 -- Input@Sink_2 -- TransferNode1 -- Input@Sink_4 Of course some entities' destinations in the right-hand loop are set to destination sinks on the left-hand loop, i.e. Source 1 entity destination is set to Sink 4, and vv. In this case I would like Vehicle 1 to transfer this specific entity to Vehicle 2 via TransferNode1, after which Vehicle 2 can drop the entity off at Sink 4. There can even be sort of a "swap" of entities which need to go to destinations not in its original vehicle's route/sequence. I've tried setting up a process where Vehicle 1 stops at TransferNode1, checks if entities need to be transferred, and if so, waits for Vehicle 2 which then picks up the entity from TransferNode1. Actually I don't know where to start with this process, or if I'm even thinking in the correct direction? Any ideas? Thanks in advance
  21. Breno: Go to the 'Add-On Process Triggers' property category of the Vehicle object. Perhaps use the 'Loaded' add-on process trigger to execute a process that assigns an entity state variable reference variable equal to the entity just loaded (e.g., Assign: CurrentEntityReservingVehicle1=Entity). Perhaps use the 'Unloaded' add-on process trigger to execute a process that clears the entity state variable reference if the vehicle has unloaded the entity into the last destination in its sequence (e.g., Decide: Entity.Sequence.CurrentJobStep==Entity.Sequence.NumberJobSteps...if True then Assign: CurrentEntityReservingVehicle1=Nothing). Perhaps use the 'Evaluating Transport Request' add-on process trigger to execute a decision process that only allows the vehicle to pickup a new rider unless the rider is its reserving entity or there is no reserving entity (e.g., Assign: Token.ReturnValue = CurrentEntityReservingVehicle1==Nothing || CurrentEntityReservingVehicle1==Entity)
  22. Thank you. I probably should/will stop now. I have learned very much from these last two days (seeing how you code the steps). But, I did run your most recent four models. And got wild results. I added a column to your results. Ketils runtime | RunTime Approach 1,4 sec | 42 sec Facility model (Source-Connector-Sink) 20,0 sec | 13 sec Process that creates objects (Create-Destroy) 1,3 sec | 3.2 sec Process with Tokens (no entity objects) created by Timer 1,6 sec | 1.7 sec Process with single Token (no entity objects) that recycles hourly Your facilitymodel (was "objectapproach") still runs VEERY fast. Recall, mine took 53 seconds, yours took 3 in my previous message. Was hoping you could elaborate how yours get the 10x faster time? I also downloaded/installed .NET 4.5. No change in execution times. Have to check to see if Simio actually loaded the correct DLL-files, I am a bit unsure of the way .NET installed (it is an in-place replacement, overwriting the DLL-files, but keeping the 4.0 version numbering, ... That's another story ...
  23. First, if you are not running XP, then I highly recommend updating to .Net 4.5 - this can make a dramatic difference in Simio execution speed. Second, I made an error in my model - I accidently ran one for 5200 weeks and the other for 5200 days. Perhaps you did something similar because 3 of the 4 models in your project had different run durations as well. I fixed that problem and while I was at it illustrated 4 different approaches to this simple model. All had periodic activity every hour for 5200 weeks (100 years). All at least track the number of activities logged (873,601 events) by adding an Integer State, an Assign to that state, and an OutputStatistic to make it display in the results. The approaches vary based on the objects involved. The approaches using objects provide additional statistics. If you run them in the Experiment window you can look to the Pivot Grid to verify results. RunTime Approach 42 sec Facility model (Source-Connector-Sink) 13 sec Process that creates objects (Create-Destroy) 3.2 sec Process with Tokens (no entity objects) created by Timer 1.7 sec Process with single Token (no entity objects) that recycles hourly Sorry for the confusion. I hope this helps.AcademicTestModel.spfx
  24. Hmm. I wasn't disregarding your advice, I think. The M/M/1 (see post from feb 29, 2012) used process/token, which reduced runtime nicely from 120 to 30 sec. I downloaded your model (thank you). I have .NET 4.0.30319. Endtime set to 5200 weeks=100 years. About 873600 entities created/disposed. OBJECT APPROACH Your model (named "ObjectApproach") runs in 3 seconds on my computer. I try to make a similar model myself (Source-Connector-Sink). Mine runs in 53 seconds. I turn off Statistics for all three objects (Model Entity, Source, Sink). It runs in 51 seconds. PROCESS APPROACH I see your code (process steps). It is exceptionally fast. I run it for 52000 weeks (1000 years). Completed in 10 seconds. So 5200 weeks is 1/10 of that, would take 1 second. I try to make a similar model. Run it for 52000 weeks. It runs in 10 seconds. Same execution speed as your (relief). It creates about 8.7 million entities, I think (since there is a Create step). Am I right? I attach an .spfx-file with your two models and my two models. Perhaps (when you have time), you can find why my object approach is 10x slower than yours. AcademicTestModel2.spfx
  25. Still hoping to speed up Simio. Any suggestions? I MUST be doing something "wrong"; as described earlier, My (token-optimized) Simio is 6x slower than Arena or my Javasim or my Csim for the M/M/1 running 1 million jobs. My colleagues say "why are you so obsessed with speed"?
×
×
  • Create New...