Jump to content

CWatson

Members
  • Posts

    308
  • Joined

  • Last visited

  • Days Won

    1

Posts posted by CWatson

  1. Sources don't have associated workschedules for creating entities. There is an Arrival Mode property on the Source that allows entities to be created in different ways. Please see the SimBits (Support panel / Sample SimBit Solutions) named Appointment Arrivals or Source with Rate Table.


    One option would be to have a Resource with a workschedule that 'controls' the number of entities created in the Source, or the Entities Per Arrival property. To do this, you would create a state variable, let's say HowManyEntities. Within your source, set the Entities Per Arrival to 'HowManyEntities'. Set up the Resource with the workschedule for when you'd like entities to be generated and when not (i.e., so that when capacity is 1, you will change HowManyEntities = 1 and when capacity is 0, you will assign HowManyEntities = 0. Within the Processes window, you can have a process, Process1, that is triggered by 'Resource1.CapacityChanged'. Within that process, have a Decide step that checks the capacity and assigns the correct value for HowManyEntities. The Source then will generate entities using the Interarrival Time specified but based on the workschedule changes of Resource1.

  2. What you could do is to have a Table that includes two columns - the first column would be your Doctor names and would be of type Object Reference > Transporter - and would have the property Auto-set Table Row Reference set to 'True' (so each worker points into the correct row in the table). Then you could set up a vector type state variable with the number of rows based on the number of doctors listed. Your second column in the table (lets call it NumAssignments) could then be a Standard Property of type 'State' and would list the state variable names, i.e., NumberOfPatients[1], NumberofPatients[2], etc. one corresponding to each Doctor row.


    Then, within the Allocated add on process of the workers (Doctors), you could change that state variable value by simply referencing the state column, i.e., Table1.NumAssignments. (or however you want to make your allocations when the patient entity sees dr. for first time). If you don't want to do it within the worker add-on processes, you could access the seized resources function information for an entity to set it there as well.

  3. The symbols correspond to the "Resource States" that are assigned (and used for statistics calculation) based on what the Server is actually doing. So, for example, when the entity has 'seized' the Server and is processing for the processing delay (or multiple processing tasks), the Server is in a 'Processing' state or Busy. When the entity leaves the Server, it is no longer processing (unless another entity has entered and in processing delay). Thus, the 9 resource states are also used for statistics calculation for the Server. You can change the symbol colors (or symbol itself) of those states by highlighting the Server, clicking on the Active Symbol button on the Symbols ribbon and selecting the appropriate symbol/value.


    If you can let us know more about what information you are trying to gather or why you wish to have the Server remain green, we can perhaps point you in the right direction.

  4. There is a user-defined RelocateObject step to be able to change the location of any object at runtime, including fixed objects or unconnected nodes. Or alternatively for an entity in free space, you can dynamically assign Entity.Movement.X/.Y/.Z. To assign the cartesian coordiantes, the LocationAt.Geographic function is available for conversion from geographic coordinate to equivalent cartesian.


    For example, Entity.Movement.X = LocationAt.Geographic(latitude, longitude).X

  5. Before the entity (patient) leaves the room (in an add on process perhaps), you can have the patient entity create a 'cleaning room' entity that will 'seize' the room as soon as the patient actually leaves the room, then the 'cleaning room' entity can delay for cleaning time and release the room (keep it a different 'type' of entity with no statistics required (Report Statistics = false) so that it doesn't get mixed in with the patient entity stats.

  6. You could use the add-on process for the worker named Evaluating Seize Request that would check the size of the queue where the customers are waiting (and I assume this is where they are requesting the worker to bring beer) - and if the size of the queue is not at least 2, then refuse the request (assign the 'Token.ReturnValue' to 'False' or '0'). The below info was taken from the help on resources (which is similar for workers/vehicles used in a seize manner as well).


    Evaluating Seize Request Add On Process


    In the Resource object from the standard object library, there is an Add On Process called Evaluating Seize Request. This Add On Process is executed when the object is evaluating whether to accept or reject the capacity allocation request. In the executed decision process, the user should assign a value of less than or equal to '0' to the executing token’s Return Value state (Token.ReturnValue) to indicate that the allocation attempt is rejected. The value '1' indicates that the allocation attempt was successful.

  7. Logs only appear in Interactive mode (facility window) and planning (Simio enterprise).


    You can, however, change the replication number (default is replication 1) that is run in interactive mode. To do so, go to the Run ribbon, Advanced Options and hover over the Randomness option, which will allow you to change the Replication Number.

  8. To send entities along different paths based on conditions, you can either specify logic within the Selection Weight property of the various paths themselves, or you could use an add-on process within the prior (leaving object/node before going to multiple servers) node based on conditions in the system. Alternatively, you could put the multiple server's input nodes into a List of nodes and select from that list using a Selection Condition.


    Regardless of which method you use above, you can evaluate entity and system information, such as ModelEntity.Is.Long (if the entity types are Long/Short), as well as either the Server.Capacity.Allocated or Node.AssociatedStation.Overload type functions. You may wish to look at some of the Sample SimBit Solutions (see button on Support ribbon) for examples of using some of these functions.

  9. Depending upon your model logic, you may wish to use the Add-On Process Triggers in either a TransferNode/BasicNode object or a Worker object.


    If the worker's desired speed (which can be accessed with the WorkerName.DesiredSpeed state variable) changes at various transfer nodes in the model, you could use the Worker's Entered Node add-on process - then within that process, have a Decide step (or multiple ones) to check the node name, destination node and then Assign the desired speed as appropriate.


    If the worker's desired speed is pretty constant except for a few occasions, you could instead have the add-on process at a specific TransferNode through its Entered add-on process, where you already then know the location and just have to Assign the desired speed as appropriate (or perhaps Decide where the worker is going via destination node and assign).

  10. Within the table, highlight the column that includes the server names. Within the properties for that column shown on the right, go to the Advanced Options section, and change the Auto-set Table Row Reference from 'False' to 'True'. This will then associate the corresponding rows with the Servers that are listed and allow you to reference other columns for data associated with those Servers.


    Note also that for time related columns (delays, etc.), change the Unit Type property to 'Time' and specify the Default Units appropriately.

  11. There are no grid cells IDs, but only x,y,z coordinates. Can you explain what you may be trying to do in terms of locating objects? There are ways to bring in object locations (coordinates) via external files.

  12. Currently, there are no paths in your model and thus the vehicle moves in free space. If you'd like it to move on a Path, add the paths between the Source / Server, Server / Sink and Sink / Source. Then, within the Vehicle object, change the Initial Travel Mode to 'Network If Possible' - this way, if a path is defined, the vehicle will move along the path (at the distance of the path * speed of vehicle). If there is no path, the vehicle will continue in free space to the desired location. A TimePath specifies the time it takes to move on a given path and that will not be used by vehicles.

  13. There are a number of functions for conveyors/paths that can be used to determine the utilization of the conveyor - they are listed in the Help under Functions, States and Events for Link Objects.


    If you would like specifically the length of entities on a particular conveyor, you can add a real State variable (Definitions/States) that you would increase when an entity enters the conveyor and decrease when the entity leaves the conveyor (let's say LengthEntitiesOnConveyor) - if all entities were the same size, you could also simply use the ConveyorName.NumberTravelers functions (with some default size).


    To determine the length of entities on the conveyor, click on the conveyor object, and within the 'Entered' add-on process, add a process that simply uses an Assign step to assign LengthEntitiesOnConveyor (or whatever your new state variable is) to be 'LengthEntitiesOnConveyor + ModelEntity.Size.Length'.


    Then, within the Reached End add-on process, add a process that uses an Assign step to assign LengthEntitiesOnConveyor to be 'LengthEntitiesOnConveyor - ModelEntity.Size.Length'.


    There are also ways to search the entities that are currently on the conveyor, using the ConveyorName.Contents queue if you want other specific information about entities on the conveyor.

  14. To get the total distance of a number of entities over time, you could add a model state variable (Definitions/States), let's call it 'TotalDistance', and assign its value every time an entity leaves the system (Sink) in the State Assignments section. Thus, the State Variable Name 'TotalDistance' would be set to the New Value 'TotalDistance + ModelEntity.TotalDistanceTraveled'. Then, within the Definitions/Elements, you could have an Output Statistic element that evaluated and reported the value of the Expression 'TotalDistance' so that it is reported in the Reports / Pivot Grid for the model.

  15. There are several ways of doing this. One way would be to write out (to a external spreadsheet OR an output table in Simio, depending on your Simio licensing) the exit time for each entity (and perhaps other entity specific property information, such as priority, etc. Then, you could use that same file (or copy of the output table results) as an input file for your second model.


    Alternatively, you could place each of these 'models' into a third 'model' in the project and connect them. This would require several changes - the first model (with the Sink output) would require the model to simply have a Transfer Node output - and then right-click the Transfer Node and select 'Bind to New External Output Node'. This will allow that model to then become an object in another model. The second model would also need to be revised to include a Basic Node input (instead of the Source input) where you would right-click on the Basic Node and select 'Bind to New External Input Node'. Finally, you would select New Model from the Project Home ribbon to start building your 'combined' model. On the left side of Simio, instead of selecting from the Standard Library of objects, you would select your Model1 and Model2 objects from the Project Library at the bottom. The TransferNode of Model1 can then be connected to the BasicNode of Model2 with a path. That is the basic concept - you may wish to look at SimBits under the category 'Building New Objects / Hierarchy' for more information.

  16. If you click on a link (or multiple links) to highlight them and then, while highlighted, use the right-click, you are able to add them to a 'network' by using the 'Create New Network' option to create a new network for the path. Once a network is created, the right-click option on a path will also then provide you the option to add the network to that network. Paths can be part of multiple networks. The right-click also allows for removing a path(s) from a network.


    Then, the Visibility ribbon provides options to show the various networks (they will be highlighted) when selected - you have the option of viewing the union/intersection of the networks.

  17. Given the information you've provided, if you have a table with a column of stations and want to use a single process to 'EndTransfer' step, you could have another column in your table that is of type Standard Property - 'Event' that associates the station name with the station name.Entered process - and then reference the 'TableName.EventProperty' in the Triggered Event Name property of the process that contains an EndTransfer step. The entity(s) that you route to the station would of course require an index into the table associated with the station (either through searching the table for a station destination or some other method for how you are selecting the station row in the table).

  18. You may wish to look at the SimBit titled "BatchingProcessUsingScanOrWaitStepToControlBatchSize" which shows two different models - one uses the Scan step and one uses the Wait step to do some pre-process batching (using various conditions on batch sizes) before entering a Server (and note that the Server processing time is then based on entities in the batch).

  19. There is an Interrupt step that will allow you to stop processing for higher priority (or whatever reason) entities. See several SimBits that are available including Interruptible Operator, Interrupting Across Multiple Servers and Interrupting Server with Multiple Capacity. These show various examples of having higher priority type jobs interrupt processing of other jobs currently being processed on a Server or with an Operator. SimBits can be found within the Support ribbon by pressing the Sample SimBit Solutions button. You can then search Interrupt either in the Basic or Advanced Search area.

  20. One way to do this would be to start with a vehicle with the Initial Number In System property set to '0' or '1'. Then, in the OnRunInitialized process at start of simulation, use a Delay step then Create step to Create a new vehicle into the system (causing the number in system to be increased). Make sure to use a Transfer step to transfer the new Vehicle to the appropriate node upon creation. Keep in mind also that Vehicles can be created, but not destroyed. This will allow you then to stagger your vehicle start.

×
×
  • Create New...