auto-js.sim.activity
Simulate a jobshop with a simulation by activity.
add-iteration
(add-iteration model new-bucket)
Adds an iteration event
add-iteration-past-event
(add-iteration-past-event model)
add-snapshot
(add-snapshot model)
Adds an event with a resource snapshot
create-new-entity
(create-new-entity model entity-source-id)
Creates a new entity from entity-source-id
A source should have * create-fn
optional a function * nb-entity
* next-event
* nb-max
* waiting-time
:errors new-entity-exception
, create-unkown-entity-id
:past-events create-new-entity
:stats entities-in
how many new entities have been created and entities-nb
how many are in the system
destroy-entity
(destroy-entity model entity)
Destroys an entity from entity-source-id
:errors : none :stats : entities throughputs
store the list of duration of the entity in the system entities-out
and entities-nb
:past-events destroy-entity
end-route
(end-route model entity)
The entity
ends its route, the entity is destroyed
:errors : route-ends-was-not-started
:stats : routes route-id throughputs
:past-events end-route
ends-production
(ends-production model entity)
Production of entity
is ended, if exists one waiting-product
is picked and its production started.
:errors : :no-current-operation
:past-events : :ends-production
:stats :resources m :nb-in-stock
, :resources m :occupation
enter-input-stock
(enter-input-stock model entity)
Product enters the input-stock and directly the production slot if available, or waits in stock instead.
:errors no-current-operation
:past-events enter-input-stock-wait-in-stock
:stats :resources m :nb-in-stock
enter-production
(enter-production model entity)
Product starts its production on machine.
:errors : current-operation-missing
, machine-is-busy-already
:past-events : enter-production
:stats :resources m :occupation
Otherwise machine is updated with starts
ends
and next-event
. And entities
is set to in-production
.
errors
(errors {:keys [entity-sources], :as model})
Check model consistency
first-entity-out
(first-entity-out model)
Return the date when the first entity get out the system
get-entity
(get-entity model entity-id during-kw)
Returns a pair of * entity
found ( nil
if not) * model
updated with an error if not
:errors unkown-entity-id
:past-events none :stats none
last-entity-in
(last-entity-in model)
Return the date when the last entity get in the system
next-event-bucket
(next-event-bucket model)
Bucket of the next entity to create, nil
otherwise
next-op
(next-op model entity)
Entity
is moving to its next operation, if there is no next operation, the route is ended.
Next operation is resolved and set to current-operation
.
:stats : When route is ended: :routes route-id :throughputs
:errors : route-ends-was-not-started
:past-events : :next-op
and end-route
on-new-product
(on-new-product model)
For entity-source that should appear now (next-event=bucket
), the product is created, the route is started and its first operation executed
- :errors
:next-event-missed
if an event should have been done in the past:source-empty
if the source exists but has never something to create - :past-events: none
- :stats: none
on-production-end
(on-production-end model)
For all resources with a next-event
at current bucket
, ends the production of entities occupying the machine.
print-error
(print-error {:keys [error-id _bucket _entity entity-source-id], :as error})
print-errors
(print-errors {:keys [errors], :as _model})
print-event
(print-event event)
Print the event
if it is matching one of this events.
print-output
(print-output model)
print-status
(print-status {:keys [sim-status], :as _model})
resource-next-event
(resource-next-event model)
show-past
(show-past model)
start
(start {:keys [resources entity-sources bucket], :or {bucket 0}, :as model} prng)
Starts the simulation.
Can be used after a previous run has been stopped.
start-route
(start-route model entity route-id)
The entity
starts the route route-id
, that should be found in route.
:errors : :route-not-existing
and route-is-empty
and when route is ended: :routes route-id :throughputs
route-ends-was-not-started
:past-events : :start-route
:stats : :routes route-id :route-nb