Jump to content

gocken

Members
  • Posts

    369
  • Joined

  • Last visited

  • Days Won

    32

Everything posted by gocken

  1. I am not sure but try repeating group property... it should Work...
  2. Additionally, you can also use built in TimeInSystem function of modelentity anytime and anywhere in the model you want. this gives you extra flexibility for average time calculations. ModelEntity.TimeInSystem
  3. Define a statevariable for modelentity. For example, modelentity.orderID. Assign it to OrderNumber from your table (i.e., modelEntity.OrderID=arrivaltable.OrderNumber) after creating the entity. again, you can either define an individual add-on process or add some extra steps to your previously defined process for seizing worker. I prefer to add some extra steps to an existing one for convenience. 1) before seizing worker object or after seizing it (i.e., I mean the appropriate place of the new step is up to your logic) you should assign the orderID to a state variable probably a string type while the "model" object is selected at the navigation window. Let it be IDOrder and assign IDOrder=bathcedmaterials.name. I assume that the material name equals to your order name. Here you should note that, this assignment should be made at the time of the worker's coming to take "batchedmaterials" to input@sink2. batchedmaterial name (i.e., IDOrder) and orderID should be matched. any time delay can cause IDorder's value to change and wrong entity will be removed from parkingstations.allocation queue. 2) define a search step---> be sure queuestatename of this should be: parkingstations.AllocationQueue, match condition: candidate.modelentity.orderID==IDOrder. 3) at the found branch of search step define a remove step. set queuestatename=parkingstations.AllocationQueue. 4) at removed branch define a transfer step. from : currentstation, to: node, node name: input@sink2. note: ***if you have not other purposes*** you should not increase the material.quantityavailable, simio automatically updates this quantity. you should fill in the details... that's it...
  4. Define “processed batch” add-on process trigger at the Workstation. The process should include seize “worker”, move “to a specified node”. Define another add-on process at the specified node. It should be “entered”. In that process use release “worker” step, “consume” step for destroying the batched materials (the logic is like destroying an entity. Since we use material instead of entities we should use consume for this purpose). Then, at the end of the simulation collect related statistics to your purposes. For example, total distance the worker traveled. Note that, since the arrival and departure distances to Workstation are equal half of the total distance the worker traveled is the distance bathced materials traveled. And you can simply collect other statistics (I do not know what are they) by using somewhat the same logic.
  5. 1) Define rowmaterial1234567 material type element. 2) Define Bommaterial material type element. 3) Deifne batchedmaterial1234567 material type element. 4) produce required number of rowmaterial1234567 materials from your table (order volüme) see the attached file for usage of these materials for Workstation object. for example if you have 507 quantities of produced rowmaterial1234567 from which you want to produce bathces of size of 50. The Workstation will produce 10 quantities of batchedmaterial1234567 material (batched materials). Note that in this situation 7 quantities of rowmaterial1234567 will be remained. Note that this is a simple not working example. I included it only for illustration purposes. You should extend this logic. For example, Material name of BOMmaterial should be referenced to your table appropriately. batchedMaterials.spfx
  6. you can simply use material quantities instead of creating huge number of new new entities (avoid using create, it is not suitable for your problem. you should think each product type as if they are materials, define material element type colum in your arrival table. You can benefit from autocreate property since you have much more product type). By this way you not only satisfy the current number of entity limits of the simio but also simplify the logic of your model. Just use material, produce required number of materials then increase the number of quantity available. While separating them or batching just simply use Workstation and BOM structure. The prosed logic needs to be adapted to your problem... In summary you should think a bit different...
  7. Your model seems to be valid. All things work right. I made some simple chages (i.e., setting order volüme to 1000 and delete some steps and add one parking point etc. they all are included in the attached model). if you watch the animation you will see your logic Works. the problem is apparently seen. NewLogicModel v4 MAIN.spfx
  8. According to the error messages it seems simio can not handle your order volüme. I do not examine your mode logic but I tested the model with order volüme 10 (for each row for your table) and the model worked without any error messages. But, as agraunke said your model logic should be tracked carefully. For example, I noticed (and fixed) one of the decide step is defined as conditon based but there is no condition specified. and also, I agree with agraunke that there could be some parking problems. For example incoming entities are transferred to stacker outputbuffer and then parked there? is this required and right?... anyway, test your model with different parameters.
  9. O.K., Asagan's suggestion should work. If not, nothing more to say, I have to see the model...
  10. Yes, I had better see your model but still my best guesses are : The problem you reported is related to software ability to transform numbers to string types automatically (perhaps simio should recognize and transform product type numbers you entered automatically to string type as they are placed in a string type column property. . If I were you I prefer to use string type labels for product types (productA, productB). If you have to use numbers, at best I suggest use your numbers between quotes "12345" (you can transform these in excel easily). or add only p at the beginning of the numbers (P12345). I am not sure but perhaps it Works. A second solution should be define product types as integer type. It seems it does not matter whether they are string or integer in your problem? But, still I do not know your aim...
  11. First of all you should know you can populate tables from excel. I think this property will simplify your job. If I were you I populate the table with 500 products via excel (simply populate the table in excel and copy paste it into the table, but be sure to match the dimensions of the tables) and when you assign the row number as in the previous post you can even specify by additional assignments which product you assigned (even if its type is in string format). Then you can easily collect statistics related with it. For example: look at the table above; TableAnimals. For examle, the modelentitys are created accoding to the percentages "Percent Type". In source object (you should only drag and drop one model entity in the facility window and assign entity type property of source object (for your problem this means product type assignment) as YourTableName.ProductTypeColumn) you can assign either modelentity.type=TableAnimals.Type (integer type) or modelentity.type=TableAnimals.Type (string type), it is up to you. If you assign product type string type simio will automatically tallies flowtime and total number produced at the end of the simulation, in results... Meanwhile, I do not know about auto row setting property. Perhaps you imply auto create property. It serves for a bit different purpose. Use the same method as in the previous post. Be sure to check whether "Table1.AvailableRowCount=='your table's max row number' ". If so, then assign ModelEntity.TableRowIndex=1.
  12. there may be many ways for performing this. If your model is not very complex the logic may be: you should track the length of outputbuffer length of source (source@outputbuffer.contents) by using two monitor elements (monitor type, CrossStateChange)...set the InitialThresholdValue for 5 for each one, define two separate processes for each monitor's triggering events; one for above 5 (In this case you should set CrossingDirection positive) and the other for below 5 (and in this case you should set CrossingDirection negative). 1) Create a new process that would be triggered by "above 5 monitör" you should seize worker 2... (source@outputbuffer.contents>5 ---> seize worker 2) 2) And by the same logic Create a new process that would be triggered by "below 5 monitör" you should release worker 2...(source@outputbuffer.contents<5 --->release worker 2...) this is not the end of the story but it is like this.... For example, you should add a storage queue and each time you need to seize worker 2 you have to search storage queue and remove the first entity waiting for a worker (this time worker 2) etc... The second way: In summary, the above logic requires some additional modeling components. Let's try the uploaded file which Works for your purpose with only one process, three steps and a node list. This one is quite easy. But, be sure both will work... and that's it... BottleLine .spfx
  13. define an TableRowIndex statevariable for ModelEntity. and use Table1[TableRowIndex].volume. be sure before returning a value from Table1[TableRowIndex].volume, TableRowIndex's value must be set to right row number. for example, in an "appropriate process" you should assign: ModelEntity.TableRowIndex= "which row you want". Note: I think you want to increment row number sequentially. If it is true you should use ModelEntity.TableRowIndex=ModelEntity.TableRowIndex+1 each time you want to use it. but by this way you can cross the max row number. So, before this assignment you should check whether you cross the max nuımber of rows. for example, you can check whether ModelEntity.TableRowIndex it will work...
×
×
  • Create New...