-
Posts
471 -
Joined
-
Last visited
-
Days Won
13
Content Type
Profiles
Forums
Events
Gallery
Downloads
Everything posted by MEagar
-
What Dave specified is correct and will work well with simplistic logic, You will however run into problems if you need to find a index/row/object/"array element" in a single array, based on conditional logic that needs to be applied across multiple related before mentioned arrays.
-
To not have three million arrays of different types that need to be correlated with an index, the following is painful yet if you don't have enterprise, I will pay for a more optimal solution.: 1. create an index as well as your arrays of type string/real/node/etc. 2. Create a user table of type expression and list the array elements in each column. You should now be able to assign the imported values during the onRunInitialized process to this grid, change the values during the simulation by means of a search block, as well as specify output Statistic elements to these state variables. If you want to make this a dynamic array, this will have to be done in the API, else be sure to specify enough array elements. It seems like allot of work to setup, yet during model creation, working with & cross referencing this table with a search block is well worth it.
-
State statistics for population of objects
MEagar replied to dadom09's topic in SI General Discussions
Although anything is possible, for custom states...In short...No...it has to be subclassed.... And Yes custom states are 3 million times better than tallies.... Custom states are a fantastic functionality as it accounts for 100% of time per object instance, and THUS rendering Tallies NULL, VOID, and an outdated technology...It is also more aligned with an object Orientated approach.... With that said, subclassed state statistics is however poorly supported in Simio.... The main thing is trying to get outputs for your custom states as a collective at a facility level... You will have to create an output element for each state within your custom state list that averages/sums/counts across the population....Glen has provided an excel element import/export functionality to aid this tedious process.... A huge pain but well worth it as what you are trying to achieve reduces code complexity, and dramatically aids in model logic simplification...we have used it and it works like a charm... Allot of the old guard (specially from an Arena background) will strongly advise you not to use state controlled logic....Yet like Arena.... Looking at how the real world operates, all PLCs within electronic devices works with state controlled logic, and should be simulated as such... Its well worth what you are trying to achieve... -
Could we muster some support for this post to enable us to update values in data tables via a process block !!
-
Transportation Library - Trains, Robots, Tanker
MEagar replied to dsturrock's topic in SI Shared Items
Auto destroy is a good idea. Just one thing on the filler to keep in mind, the source tank may have a capacity greater than or less than the entity being filled. Important to test fringe conditions. -
Transportation Library - Trains, Robots, Tanker
MEagar replied to dsturrock's topic in SI Shared Items
Also, just a note, I have cracked all this logic but would like to see how you would approach these problems.... -
Transportation Library - Trains, Robots, Tanker
MEagar replied to dsturrock's topic in SI Shared Items
Hi Glen, I feel your pain...hahaha....and please whatever you do stay away from Math.Epsilon for this... Lets have a look at this based on the impact that this problem will have on a Tanker object (Transportation Requests) for I think the ultimate generic solution for all FlowContainer elements should be based on this logic... 1. There can always be a positive or negative residual around a specified level (0.0001 + 16000 MT - 0.0001) in a tank (cap of 25 000 MT)... 2. If there is a positive residual, there will be an entity in the output regulator's flow request queue...Thus an erroneous transport request will be logged.... 3. If there is a negative residual, there will be no entity in the output regulator's flow request queue...Thus transporter will be stuck as it would not have reached its load level of say 16 000 MT.... Based on these assumptions we have discarded the problem with the residual in the tank, which kinda really can be disregarded...and redirected the problem to the Flow regulators where the actual residual problem becomes more evident... What I typically do is set the variables on the monitors watching the transfer, to the specified level WITH plus or minus 0.0000000001 depending on the transfer performed. The monitor will thus trigger the end transfer process just before the specified level, and then I simply adjust variables back up by means of rounding up to a higher decimal. (0.0000001 instead of 0.0000000001 ) ALTHOUGH, you HAVE to clear your regulators' flow request queue before and after ANY transfer if you use the above option. This brings another catch 22 for each time you do this, a new entity instance is created. To be quite honest, I would program in hard code a function that executes after every transfer to round the value up to a higher decimal. i.e. perform the transfer in the code with the monitor to a level of variable - 0.00000001 (HARD CODE) and then have a function call after transfer to cut some decimals and round up back to the specified level which is at a higher order i.e. 0.000001. Truly think the solution to this conundrum lies close to this logic and its difficult to explain the on the blog...Perhaps we can set up a skype conference call and I can demonstrate as well as enlighten you to ALL potential pitfalls and workarounds we have discovered pertaining to these transfers... -
Cant open your model as I have a commercial license but it sounds like a similar problem I had. On the input buffer of each server, set the capacity = 0. Also, instead of using a storage queue, try using a system like the attached. You need to set the currenttravellercapacities of the paths feeding the servers to 0. Now, when an entity arrives at the node, park the entity. This will transfer the entity to the nodes parking station. Once capacity becomes available on a server, use a search block, based on any server's criteria to search the parking station for the correct entity. Once found, you need to set the currenttravellercapacities of the path feeding the servers to 1 and unpark the entity found. Unfortunately Simio does not have an ExitRankingRule for the queue.
-
Transportation Library - Trains, Robots, Tanker
MEagar replied to dsturrock's topic in SI Shared Items
Glen... This logic clashes with the stacked bars since the entity density has been omitted from this discussion, hence the stacked bars animation always need be corrected. the equation goes volume = mass/density...Thus 2 variables need to be available as user inputs whilst one variable should always be calculated to ensure that human error does not prevail in Simio. If you want to display volume and weight as user inputs, then you have to FIX/LOCK density. Having the three variables not add up = ERROR in Simio. The equation is fixed in stone thus its possible to use volume and weight at different points in the model as you SHOULD always get the same answer. Not sure how the infinity is handled in the equation but I will leave it up to you. -
Transportation Library - Trains, Robots, Tanker
MEagar replied to dsturrock's topic in SI Shared Items
Thing here is Alan, if you look at the example included in the transportation library, you will note that they assign volume = 5 and weight = 5. Thus if you want to use this transporter for weight or volume you have to make a double assignment each time. Throw some other conversions such as weight = metric tons and boom, transfer time goes out the window. There is also the density variable and flowcontainer fringe conditions on top of that. Bottom line, I can break this transporter so not worth using till fixed. -
Transportation Library - Trains, Robots, Tanker
MEagar replied to dsturrock's topic in SI Shared Items
Hi Glen, There is also no onEntered process on the FlowInputNode on the dock.... Since the feed will 7/10 times be from a tank, how do you change the priority of the entity that is flowing to effect the Priority routing on the Transporter ?? Since entity instances change as they flow through regulators, this process will have to be included at the dock ?? Did you make any changes to the Pipes ?? -
Transportation Library - Trains, Robots, Tanker
MEagar replied to dsturrock's topic in SI Shared Items
Thanks for the update Glen but I will wait till the next update till the Tanker has been standardized to with the rest of the Simio Flow objects. i.e. Capacities assignments of a Tank, Filler, Emptier, Flowcontainer: vs. Capacity assignment of a Tanker: Not going to have to assign volume and weight at every point in the model where capacities fluctuate due to no "Load Level" capabilities as well as not going to get frustrated again because transfers don't work...i.e. transfer times don't equate real loading times time..... -
Transportation Library - Trains, Robots, Tanker
MEagar replied to dsturrock's topic in SI Shared Items
Any ideas when the next update on the Tanker and Dock objects will be completed such that I can plan to redo my old models ? -
Cant open an academic model, but try investigating the routing group element, sequence tables and the setnode block. Also note that an entity has a priority and sequence property that may be used in conjunction with the routing group element. Mark
-
What a champion. Thanks for the share. This globe object is going to be used in all off my subsequent models. Mark
-
Hi Glen, This was my bad...I had exported all output statistics, changed to state statistics, and re imported....Had to do this again for state statistics to reset log observations to true as the default was false. Forgot the output statistics does not have the log observations property. Mark
-
Hi Glen... PLEASE can you update the export to include Log_Observations == True/False.... Fanks !!
-
shooting from the hip here....try using "Candidate.MyTransferNode.Node.UserDefinedStateVariable"
-
Thanks Alan, this helped me too....
-
Jannie probeer my op skype kry, ekke het jou model gekyk en daar is n paar dinge waar die jou agter end gaan sien.
-
And just a note...You will be AMAZED at how easy Simio has made it to control continuous Bulk Mass or fluid flow....Its simple as pie and works much better than any discrete solution in ANY simulation package.... I have used about 4 including Arena and Simul8....
-
Yes, very possible.... Check out the new transporter library - Tankers and the Pipes....And note that the differential equation is sitting at the flow regulator...that's where you control flow in and out, not the tank if I am not mistaken.... You can also allow the entities to mix within a tank.... Mark
-
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.
-
-
click on the node and check the properties: GENERAL->Physical Characteristics-> Location -> Y if I am not mistaken....