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. 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
  2. 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.
  3. 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.
  4. 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.
  5. 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
  6. 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
  7. What appears to be happening is that both the original token leaving the Original segment and the new token, leaving the Found segment, are both associated with the same Entity and therefore the Transfer Steps are trying to transfer the same entity. This is shown in the Trace when it says which entity it is trying to transfer. Therefore, when the second Transfer step attempts the transfer, it says that it cannot transfer because the entity is already in the middle of being transferred. It is difficult to determine why the process logic is having both tokens transfer the same entity, but the first thing I would suggest that you check is whether or not the Search step is finding the correct entity during it's search. Or if you are using the Entity Type property of the Transfer Step to transfer a specific entity, you might look to make sure you are transferring the correct entity.
  8. 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
  9. Thank you - fixed. Have re-jigged the logic so that nothing crucial happens with the original token.
  10. I have seen this error before with transporter/entity transfers... You may have conflicting logic here.... i.e. an event occurs that triggers a token into a delay or wait step based on a condition before transfer can complete, yet during this duration another event occurs that wants the transfer to occur for a second time or the entity to be directed somewhere else...the original token is not released and destroyed first... simple solution... I used dummy nodes to shift the transporter\entities around based on a precedence constraint structure whilst clocking the time of the transporter\entity at each node. This worked like a bomb. Also, if you don't need the original token, destroy it or don't attach any processes on the line after it.
  11. Thanks for the advice and for getting back to me so quickly - I'll try a delay in the original branch
  12. By default found branch (token) is executed first and then the original. This is unless you have a delay in found branch. If so, (and the delay is at least math.epsilon) original token is executed before the delay and than found token executes. If you can send a screenshot of your process it will be easier to give precise help.
  13. Hi Everyone I seem to be having a problem with a search step with a transfer step following depending on whether a match is found. I'm sure this is due top my lack of understanding of tokens - apologies, I'm pretty new to Simio! As I understand it, the Search step creates a new token when the match criteria is found but retains the original token which continues through the process. I think the original token is causing the problem. I guess my question is; is there a way to suppress the original token (or destroy it) once the new token is play? I believe the original is trying to initiate an unwanted transfer step which is clashing with the wanted step, resulting in a runtime error. I've attached the error message which may help. Any help, advice or direction to texts explaining tokens would be very much appreciated. .......Dave
  14. I just updated the library in the original post and included some examples. We welcome your feedback.
  15. You can use the search steps 'save number found' state assignment in the advanced properties. Then check the state you saved this too on the original branch to assign 'nothing' to your state. Alternatively, make the search expression 1. This will save, into Token.ReturnValue, (1)*(numberFound). Check your token.returnvalue to see if any were found.
  16. Hi Everyone I have a general question about a search step. According to the help file, if a search step finds something a new token is created and the found segment is executed. If nothing is found, the found segment is never executed. I have logic requiring that an object reference state variable is updated based on the result of the search, but whether something is found or not. I am searching for a closest idle vehicle, so there is no problem if at least one vehicle is idle - that part works fine. However if no vehicles are idle (i.e. the found segment is never executed) , I would like to make the object reference equal to Nothing (which I can check for in subsequent steps). I'm just struggling to do that because placing the assignment in the found segment when nothing is found obviously doesn't work. This search is performed many times, so the object reference will have a previous value which I need to update (i.e. I can't default it to Nothing). Is there a token return value in the original segment that could indicate whether something/nothing was found? I can't find anything in the help file. -Chris
  17. 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
  18. 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
  19. 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)
  20. 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 ...
  21. 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
  22. 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
  23. 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"?
  24. That's right... use maximize expression with the Search step, set limit to 1 (default). The new token will be associated with the row. Alternatively, you can save the row index using the advanced properties of the search step. The Search step feels like the most powerful step in Simio to me...
  25. I found two interesting things when I am modifying the subclass of a vehicle. I was trying to incorporate the request evaluating logic in the vehicle subclass processes rather than model processes, for ease of transplant and multiple uses. But when the token return value is 0 in subclass, no matter what add-on-process returns, vehicle still picks up entities. What's the logic behind this? How should I make it work? Anybody knows? Another problem is I added breakpoint in the subclass, it does not stop, but I use some assign step to detect it, these assign step works, which means token is executing the process, anybody knows why the breakpoint does not work? Attachment is the model, Assign step assign token return value 'False' in evaluating request in subclass of vehicle. Everytime process runs, It could be seen weight of vehicle +0.5 Anybody knows why? SimplestTuggerWithTwoCycle.spfx
×
×
  • Create New...