simmer 4.4.7
New features
- Add support for subsetting by activity tag (#305).
- New getter get_start_time()returns the running
arrival’s start time (#304).
Minor changes and fixes
- Fix set_source()to avoid leaking arrivals from the old
source (#322).
- Fix sources to properly reset distributions and trajectories
(#324).
- Fix resources to properly reset initial parameters (#325).
- Fix start time of arrivals in cloned batches (#285).
simmer 4.4.6.4
New features
- Add support for activity tags via tagargument (as part
of #287).
- Add support for named rollbacks via tags. The amountargument is deprecated in favor of the more generic nametarget. The former will still work, but raises a warning
(#287 addressing #197).
- Switch to C++17, drop Boost usage (#297).
Minor changes and fixes
- Fix call identification on error (#286).
- Make tests less verbose by default.
- Fix deprecated functionality in vignette.
- Fix vignette to feed character input to
numeric_version.
- Fixes for Apple Clang 10.
- Fix format-security warning.
- Fix pandoc error in JSS vignette.
simmer 4.4.5
New features
- Add arithmetic support for scheduleobjects
(#272).
- New get_batch_size()getter allows a batch to retrieve
its size (#263).
- New get_activity_time()andget_activity_time_selected()getters allow an arrival to
retrieve the amount of activity time spent in resources (#186).
Minor changes and fixes
- Apply magrittr workaround and avoid copying simmerandmonitorobjects in function environments for generators too
(#279).
- Fix file removal on object destruction for file-backed monitors
(#277).
- Remove cap on the number of nested branches for trajectory printing
(#262).
- Fix duplicate time-based batch trigger (as part of #263).
- Fix typo and trajectory in bank vignettes (#283).
- Fix clone synchronization with wait=FALSE, i.e.,
arrivals don’t need to trigger the samesynchronize()activity to be in sync (#275).
simmer 4.4.4
Minor changes and fixes
- Fix memory issues (“not previously seized” error) when reneging from
multiple resources (#268).
- Use ‘given’ instead of ‘middle’ in CITATION (#273).
simmer 4.4.3
New features
- Add support for functions in when_activated()(#250).
- Add support for dynamic batch sizes (#258 addressing #245).
Minor changes and fixes
- Fix multiple reporting of ongoing arrivals (#240).
- Set package namespace as parent of simmerandwrapenvironments (#241).
- Fix arrival restart after queue drops (#257).
- Fix segfault printing activities with empty vectors (#253).
- Fix source behaviour with missing values, which now stop arrival
generation in the same way as negative values do (#256).
- Fix deactivate(), which now unschedules future arrivals
(#249).
simmer 4.4.2
Minor changes and fixes
- Fix memory issues in trap(),synchronize()androllback(). These are stateful activities that require
storing information about passing arrivals to manage clones or
redirections. These activities were not properly cleaning their storage
when arrivals were rejected at some point in the trajectory. As a
result, certain simulations with these activities involved may show
random improper behaviour depending on how memory reuse happens. This
patch unifies storage management for stateful activities, adds a new
interface to register these activities and another interface for
arrivals to notify their termination, so that the stored information is
properly cleaned up (#231).
- Fix state sharing in round-robin policy operation in
select()(#233).
simmer 4.4.1
Minor changes and fixes
- Fix pause status of reneging arrivals that are kicked from a
resource queue (#228 addressing #227).
- Set the minimum execution priority for the timeout()activity. This makes possible to set a null timeout so that the next
event is processed in the last place if several more events happen at
the same time (#229).
- Extend the Queueing Systemsvignette with a section
about custom service policies (as part of #229).
simmer 4.4.0
New features
- Add outandkeep_seizedparameters toleave()with the same behaviour as inrenege_in()andrenege_if(). Code and
documentation of these functions are now integrated underhelp(renege)(#208, #217).
- Convenience functions from,toandfrom_toaccept dynamic parameters for argumentsstart_time,stop_timeandevery(#219).
- Activities to interact with sources have been vectorised to modify
multiple sources at once (#222).
- Several generators or resources with the same parameters can be
added with a single call to add_generator()andadd_resource()respectively if a vector of names is
provided (#221).
Minor changes and fixes:
- Fix get_mon_*()dispatch for named lists (#210).
- Get/put the RNG state when random numbers are required in the
backend (#218).
- Fix convenience functions from,toandfrom_toto preserve the environment of the supplied
functions (as part of #219).
- Documentation improvements (#212, #220).
- Fix queueing in multiple resources after preemption (#224 addressing
#206).
simmer 4.3.0
New features
- Add ability to keep_seizedresources after reneging
(#204 addressing #200).
- Add ability to define a range of arrival priorities that are allowed
to access a resource’s queue if there is no room in the server (#205
addressing #202).
Minor changes and fixes:
- Drop R6 as a dependency (#193 addressing #190).
- Small fix in fromandfrom_to+
documentation update (75a9569).
- Move activity usage examples to help pages (#194).
- Fix shortest-queue selection policies (#196).
- Fix batch triggering (#203).
- Update JSS paper, CITATION, references and DOI.
simmer 4.2.2
Minor changes and fixes:
- Fix batches with an infinite timeout (#184).
- Fix preemption for arrivals previously stopped by a signal
(#187).
- Fix handler loop for two consecutive signals (#188).
- Fix incorrect handler linking (#189).
simmer 4.2.1
Minor changes and fixes:
- Fix memtest notes on CRAN (e741686).
simmer 4.2.0
New features:
- New handle_unfinished()activity sets a drop-out
trajectory for unfinished arrivals, i.e., those dropped from a resource
(due to preemption, resource shrinkage or a rejectedseize)
or those thatleavea trajectory (#178 addressing
#177).
- New release_all()andrelease_selected_all()activities automatically retrieve
the amount of resources seized and release it (#180 addressing
#25).
- New get_seized()andget_seized_selected()getters allow an arrival to retrieve the amount of resources seized
(#180 addressing #179).
- New stop_if()activity sets a conditional breakpoint
(#181 addressing #100).
Minor changes and fixes:
- Fix performance issues in data sources (#176).
- Update CITATION.
- Fix monitored activity for preempted arrivals (as part of
#178).
- Fix seizes/releases with a null amount (as part of #180).
- Rename internal status codes (as part of #181).
- Provide more context on error or warning (as part of #181).
- Extend the Queueing Systemsvignette with a section
about state-dependent service rates.
- Fix performance issues in getters (#183).
simmer 4.1.0
New features:
- New getter get_selected()retrieves names of selected
resources via theselect()activity (#172 addressing
#171).
- Source and resource getters have been vectorised to retrieve
parameters from multiple entities (as part of #172).
- Simplify C++ Simulatorinterface for adding processes
and resources (#162). The responsibility of building the objects has
been moved to the caller.
- New add_global()method to attach global attributes to
a simulation environment (#174 addressing #158).
Minor changes and fixes:
- Remove 3.8.0 and 4.0.1 deprecations (#170 addressing #165).
- Fix get_global()to work outside trajectories (#170
addressing #165).
- Fix rollback()with an infinite amount (#173).
- Fix and improve schedules and managers (as part of #174).
- Fix reset()to avoid overwriting the simulation
environment (#175).
simmer 4.0.1
New features:
- New getters (#159):
- get_sources()and- get_resources()retrieve
a character vector of source/resource names defined in a simulation
environment.
- get_trajectory()retrieves a trajectory to which a
given source is attached.
 
- New resource selection policies:
shortest-queue-available,round-robin-available,random-available(#156). These are the same as the existing non-availableones, but they exclude unavailable resources (capacity set to zero).
Thus, if all resources are unavailable, an error is raised.
Minor changes and fixes:
- Rename -DRCPP_PROTECTED_EVAL(Rcpp >= 0.12.17.4) as-DRCPP_USE_UNWIND_PROTECT(6d27671).
- Keep compilation quieter with -DBOOST_NO_AUTO_PTR(70328b6).
- Improve log_print (7c2e3b1).
- Add when_activated()convenience function to easily
generate arrivals on demand from trajectories (#161 closing #160).
- Enhance scheduleprinting (9c66285).
- Fix generator-manager name clashing (#163).
- Deprecate set_attribute(global=TRUE),get_attribute(global=TRUE)andtimeout_from_attribute(global=TRUE)(#164), the*_globalversions should be used instead.
simmer 4.0.0
- The simmerlicense has been changed to GPL >=
2.
New features:
- The C++ core has been refactorised into a header-only library under
inst/include(#147 closing #145). Therefore, from now on it
is possible to extend the C++ API from another package by listingsimmerunder theLinkingTofield in the
DESCRIPTION file.
- New generic monitorconstructor enables the development
of new monitoring backends in other packages (179f656, as part of
#147).
- New simulation-scoped logging levels. The log_activity
has a new argumentlevelwhich determines whether the
message is printed depending on a globallog_leveldefined
in thesimmerconstructor (#152).
- set_attributeand- set_globalgain a new
argument to automatically initialise new attributes (#157). Useful to
update counters and indexes in a single line, without initialisation
boilerplate.
Minor changes and fixes:
- Enhanced exception handling, with more informative error messages
(#148).
- Refactorisation of the printing methods and associated code
(#149).
- Allow empty trajectories in sources and activities with
sub-trajectories (#151 closing #150).
- Enable -DRCPP_PROTECTED_EVAL(Rcpp >= 0.12.17.3),
which provides fast evaluation of R expressions by leveraging the new
stack unwinding protection API (R >= 3.5.0).
- Replace backspace usage in vector’s ostreammethod
(2b2f43e).
- Fix namespace clashes with rlangandpurrr(#154).
simmer 3.8.0
New features:
- New data source add_dataframeenables the attachment of
precomputed data, in the form of a data frame, to a trajectory. It can
be used instead of (or along with)add_generator. The most
notable advantage over the latter is thatadd_dataframeis
able to automatically set attributes and prioritisation values per
arrival based on columns of the provided data frame (#140 closing
#123).
- New set_sourceactivity deprecatesset_distribution(). It works both for generators and data
sources (275a09c, as part of #140).
- New monitoring interface allows for disk offloading. The
simmer()constructor gains a new argumentmonto provide different types of monitors. By default, monitoring is
performed in-memory, as usual. Additionally, monitoring can be offloaded
to disk throughmonitor_delimandmonitor_csv,
which produce flat delimited files. But more importantly, the C++
interface has been refactorised to enable the development of new
monitoring backends (#146 closing #119).
Minor changes and fixes:
- Some documentation improvements (1e14ed7, 194ed05).
- New default until=Inffor therunmethod
(3e6aae9, as part of #140).
- branchand- clonenow accept lists of
trajectories, in the same way as- join, so that there is no
need to use- do.call(#142).
- The argument continue(present inseizeandbranch) is recycled if only one value is provided but
several sub-trajectories are defined (#143).
- Fix process reset: sources are reset in strict order of creation
(e7d909b).
- Fix infinite timeouts (#144).
simmer 3.7.0
New features:
- New timeout_from_attribute()activity makes it easier
to set a timeout based on an attribute (#129).
- The activities set_attribute(),set_prioritization(),set_capacity()andset_queue_size()get a new argumentmodwhich,
if set to"+"or"*", modifies the
corresponding value instead of substituting it. This makes it easier to
increment, decrement or scale one of these values (#130).
- New *_selected()versions for the already available
resource getters:get_capacity(),get_queue seize(),get_server_count()andget_queue_count()(#134).
Minor changes and fixes:
- Broadcast signals with higher priority to prevent an arrival to
catch its own signal with a trap()after asend()(#135).
- Generate new arrivals with minimum priority to avoid wrong
interactions with simultaneous activities (#136).
- Remove v3.6.x deprecations: the old attribute retrieval system (see
notes for v3.6.3), as well as methods create_trajectory()andonestep()(#117).
- Remove get_mon_resources()’sdataargument. It was there for historical reasons and probably nobody was
using it (851d34b).
- New vignette, “simmer: Discrete-Event Simuation for R”, paper
accepted for publication in the Journal of Statistical Software. Remove
“Terminology” vignette (#127).
- New vignette, “Design and Analysis of 5G Scenarios”, supplementary
materials for a paper accepted for publication in the IEEE
Communications Magazine (#137).
simmer 3.6.5
New features:
- set_attribute()(and- set_global()by
extension) can set multiple attributes at once by providing vectors of- keysand- values(or functions returning such- keysand/or- values).- get_attribute()(and- get_global()by
extension) can retrieve multiple- keys(#122).
- New stepn()method deprecatesonestep()(e452975).
Minor changes and fixes:
- Restore ostreamafter formatting (9ff11f8).
- Fix arrival cloning to copy attributes over to the clone
(#118).
- Fix self-induced preemption through set_capacity()(#125).
- Update “Queueing Systems” vignette (a0409a0, 8f03f4f).
- Update “Advanced Trajectory Usage” vignette (4501927).
- Fix print methods to return the object invisibly (#128).
- New “Dining Philosophers Problem” vignette (ff6137e).
simmer 3.6.4
Minor changes and fixes:
- Fix preemption in non-saturated multi-server resources when seizing
amounts > 1 (#114).
- Fix queue priority in non-saturated finite-queue resources when
seizing amounts > 1 (#115).
- Fix resource seizing: avoid jumping the queue when there is room in
the server but other arrivals are waiting (#116).
simmer 3.6.3
New features:
- Show simulation progress via an optional progresscallback inrun()(#103).
- New “The Bank Tutorial: Part II” vignette, by Duncan Garmonsway
@nacnudus
(#106).
- New getters for running arrivals (#109), meant to be used inside
trajectories:
- get_name()retrieves the arrival name.
- get_attribute()retrieves an attribute by name. The old
method of retrieving them by providing a function with one argument is
deprecated in favour of- get_attribute(), and will be
removed in version 3.7.x.
- get_prioritization()retrieves the three prioritization
values (- priority,- preemptible,- restart) of the active arrival.
 
- New shortcuts for global attributes (#110):
set_global()andget_global(), equivalent toset_attribute(global=TRUE)andget_attribute(global=TRUE)respectively.
Minor changes and fixes:
- Some code refactoring and performance improvements (2f4b484,
ffafe1e, f16912a, fb7941b, 2783cd8).
- Use Rcpp::DataFrameinstead ofRcpp::List(#104).
- Improve argument parsing and error messages (#107).
- Improve internal function make_resetable()(c596f73).
simmer 3.6.2
Minor changes and fixes:
- Update “The Bank Tutorial: Part I” vignette (@nacnudus in #90).
- Fix trap()’s handler cloning and associated test
(#91).
- Apply select()’spolicyalso whenresourcesis a function (#92).
- Accept dynamic timeouts in batches (#93).
- Change rollback()’s default behaviour totimes=Inf, i.e., infinite loop (#95).
- Stop and throw an error when timeout()returns a
missing value (#96 and #97).
- Fix memory management: resetting the environment was clearing but
not deallocating memory (#98, fixed in #99).
- Fix object destruction: workaround for tidyverse/magrittr#146 (#98,
fixed in effcb6b).
simmer 3.6.1
Minor changes and fixes:
- Recycle logical indexes when subsetting (2526e75).
- Implement replacement operators, [<-and[[<-(#88).
- Provide rep()S3 method for trajectories
(7fa515e).
- Remove plotting functions (bb9656b), deprecated since v3.6.0. The
new simmer.plotpackage (on CRAN) already covers these
features among others.
- Don’t evaluate vignette chunks if Suggestsare not
installed (e40e5b6).
- Rewrite DESCRIPTION (3f26516).
- Add an everyparameter to thefrom_to()convenience function (9d68887).
simmer 3.6.0
New features:
- New subsetting operators, [and[[, for
trajectories (1847898). Think about trajectories as lists of activities
and these operators will do (almost) everything you expect. As a side
effect, the genericshead()andtail()automatically work with trajectories also as expected.
- New length()method to obtain the number of first-level
activities in a trajectory (f86375a). Useful in combination with the
subsetting operators.
Minor changes and fixes:
- create_trajectory()has been deprecated in favor of- trajectory()(76c1317).
- plot_resource_usage(),- plot_resource_utilization(),- plot_evolution_arrival_times()and- plot_attributes()have been deprecated and will be removed
in the next release in order to minimise dependencies (5b43f2b). We plan
to release a new package on CRAN covering these features and new
ones.
- All methods are now S3 methods, so that a nice intelligible error is
displayed if you apply a method to the wrong object (e891045).
- All the activity management -related stuff has been removed, i.e,
get_head(),get_tail(),print_activity(),get_next_activity(),get_prev_activity()(f86375a). These methods were only
useful for development purposes and nobody should be using them. And it
was never a good idea to directly expose external pointers.
- Clone all trajectories before passing them to the C++ core
(f655cae).
- Update “Advanced Trajectory Usage” vignette.
- Update “Queueing Systems” vignette.
simmer 3.5.1
New features:
- New renege_if()activity triggers reneging upon
reception of a signal broadcasted withsend()(#84).
- Add support for uninterruptible handlers in trap()(bb2aa46).
- Add support for global attributes in set_attribute()(#82).
Minor changes and fixes:
- Fix bug in set_queue_size()withqueue_size_strict=TRUE: arrivals were not being dropped
(#83).
- Fix bug in set_capacity()with a preemptive resource
when the old value wasInf: arrivals were not being
preempted (63beb2c).
- Fix bug in per-resource activity monitoring: activity was not being
reset (55097c9).
- Fix trap()printed information.
- Update “Advanced Trajectory Usage” vignette.
- New “Other SimPy Examples” vignette.
simmer 3.5.0
New features:
- set_capacity()and- set_queue_size()become
activities (#77). Just like- seize()and- release(), they have the associated- set_capacity_selected()and- set_queue_size_selected()for a joint use together with- select().
- New activate()anddeactivate()activities
allow an arrival to start or stop a generator, respectively, from inside
a trajectory (#80).
- New set_trajectory()andset_distribution()activities allow an arrival to install a
new trajectory or distribution, respectively, in a generator from inside
a trajectory (#80).
- Refactorised and improved arrival monitoring.
- New interarrival communication activities allowing asynchronous
programming: send(),trap(),untrap()andwait()can be used to send
signals, wait for signals, trap them and launch asynchronous
handlers.
- New log_()activity simply prints messages for
debugging purposes (eaa4554).
Minor changes and fixes:
- Store inline trajectory objects inside the simulation environment to
prevent them to be garbage-collected.
- Update “Advanced Trajectory Usage” vignette.
simmer 3.4.4
Minor changes and fixes:
- Fix non-defined behaviour caused by a race condition in object
destruction under some platforms.
simmer 3.4.3
Minor changes and fixes:
- Remove warnings for unused arguments in seize()andseize_selected()(1c8c3bb).
- Fix crash on arrival reneging in non-triggered batches
(8713d95).
- Fix crash on batches triggered before the timer expires
(8713d95).
- Fix crash on non-released preemptive resources when capacity
decreases (#75).
- Leaving without releasing a resource throws a warning (#76).
simmer 3.4.2
New features:
- Ongoing (unfinished) arrivals are reported with
get_mon_arrivals(ongoing = TRUE)(#73).
Minor changes and fixes:
- Simplify Rcpp glue: remove unnecessary as<>()calls (ec4e51a).
- Simplify trajectory’s head/tail management (06432a8).
- Now, run(until)runs the simulation exactly untiluntil, instead of until the first event scheduled at a time
>=until(e7264f6).
- Fix batch cloning (c20bc1d).
- Coverage improved.
simmer 3.4.1
Minor changes and fixes:
- Fix memtest notes on CRAN (heap-use-after-free).
- Fix memory leaks.
simmer 3.4.0
New features:
- Prioritization (priority,preemptible,restart) has been moved fromseize()toadd_generator()(#69). This leads to a more natural
interpretation of prioritization values as attributes of arrivals from
the same generator, rather than attributes of aseize().
Still, prioritization values can be redefined dynamically from inside a
trajectory with the new activityset_prioritization().
- New optional post.seizeandrejectsub-trajectories inseize()andseize_selected()(#49). This feature allows us to fine-tune
what happens to an arrival if it cannot seize a resource: instead of
getting dropped, it may execute a given sub-trajectory.
- New clone()andsynchronize()activities
(#71).clone()implements the workflow pattern in which an
entity is processed in multiple parallel threads. The user can define a
different sub-trajectory for each clone. Withsynchronize(), multiple parallel clones converge and are
synchronized: only one continues (the first or the last to arrive), and
the others are removed.
- New batch()andseparate()activities
(#45). They can be used to implement a rollercoaster process:batch()collects a number of arrivals before they can
continue processing as a block, andseparate()splits a
previousl established batch.
- New renege_in()andrenege_abort()activities (#58). They can be used to set or unset a timer after which
the arrival will abandon.
Minor changes and fixes:
- If a branch()’soptionreturns0, the arrival skips thebranch()and
continues to the next activity instead of throwing anindex out of rangeerror (#70).
- Throw errors on incorrect releases (#72).
- Remove deprecated convenience function every()(#65)
andbranch()’s deprecated argumentmerge(#57).
- New “The Bank Tutorial: Part I” vignette, by Duncan Garmonsway @nacnudus (#68).
- Update “Advanced Trajectory Usage” vignette.
simmer 3.3.0
New features:
- New join()activity to concatenate trajectories
(#50).
- Batched generation: the generation function can return more than one
interarrival value at a time (#65).
- Add the option queue_size_stricttoadd_resource()to guarantee the queue size limit with
preemption (#59).
- New select(),seize_selected()andrelease_selected()activities (#52).
- Modify resources (capacity, queue size) from inside a trajectory
(#66).
- New leave()activity (#63).
Major fixes:
- Fix per-resource activity time monitoring (#67). The problem emerged
when an arrival revisited a resource and it was enqueued. An
uninitialised variable could lead to an activity time greater than
end_time - start_time. All versions 3.2.x are affected by
this bug.
Minor changes and fixes:
- Fix the description of preemptiblein the documentation
ofseize()and forcepreemptibleto be equal
or greater thanpriority(#53).
- Reset finite generators (#51).
- Fix the handling of a capacity change when the new value is infinite
(#60).
- Various doc fixes (#61).
- Change branch()’smergeparameter name tocontinue. The old name is deprecated (#57).
- Use match.arg()in multiple-choice arguments
(#55).
- Fix branch()backwards linking and count (#56).
- Split release()in two steps to deal properly with
capacity changes at the same point in time (#64).
- The convenience function every()is deprecated due to
#65.
- Update and extend previous vignettes.
simmer 3.2.1
New features:
- Add time-specific resource availability support (#21). Both
resources’ capacityandqueue_sizecan change
over time following a user-defined scheduling, which can be generated
with the new functionschedule().
- Advanced peek: inspect any number of future events in the event
queue (8147820). For more details, see ?peek.
Minor changes and fixes:
- Fix steps grouping in plot_resource_usage()(8da9b97).
- Fix incorrect trajectory behaviour when a rejection occurs inside a
branch with merge=TRUE(#46).
- Fix a couple of segmentation faults in preemptive resources
(f64f6b2).
- Improve verbose output (9013db0).
- New multiset-based event queue with unscheduling capabilities
(a615fea and d6a9d67).
- A simulation may run forever (until the user interrupts it), that
is, until=Infis allowed now (f47baa9).
- New vignette on queueing systems.
- New vignette on Continuous-Time Markov Chains.
- Update and extend previous vignettes.
simmer 3.2.0
Major fix:
- In previous versions, resources were monitored
before performing the corresponding seize/release
activity, before changing the status of the system. Thus,
t=3, queue=2meant that, untilt=3, the queue
had 2 customers, and att=3the system changed (because of
a new arrival or a new departure). The idea was to keep the values and
time vectors aligned (see #28). But from this moment on, the resources
are monitored after changing the status of the system.
This is more consistent with what a user would expect, and more
consistent with the behaviour of other related R functions (e.g., seestepfun(), from thestatspackage). Wrapping
up and from now on,t=3, queue=2means that some event
happened att=3whose immediate and subsequent result was a
queue with 2 customers.
New features:
- Add preemption functionality (#34). Preemption comes into play when
a resource is specified as preemptive=TRUE. Arrivals in the
server can be preempted on apreempt_order="fifo"orpreempt_order="lifo"basis. Eachseize()has
three basic properties:
- priority: already present in previous versions.
- preemptible: another- seize()with a- priorityvalue greater than this may preempt the present- seize().
- restart: whether the current task (a- timeout()activity, for instance) should be restarted if
the arrival is preempted.
 
Minor changes and fixes:
- Remove deprecated functions show_activity()andshow_trajectory().
- Add every(),to()andfrom_to()convenience functions (8e524cd).
- Fix colour scale in plot_resource_usage()(6b034a7).
- Fix compatibility with the upcoming version of testthat(#41).
- The branch()activity now provides attributes to itsoptionfunction, as the other activities (#42).
- Implement error handling in plot_*()functions
(#44).
simmer 3.1.2
New features:
- Monitor arrivals’ start/activity/end times on a per-resource basis
(#38). So far, the function get_mon_arrivals()returned the
start/activity/end times per arrival for the whole trajectory. This
behaviour remains, but additionally,get_mon_arrivals(per_resource = TRUE)returns these times
per resource, so that it is possible to retrieve queueing/system times
per resource.
Minor changes and fixes:
- Fix testing ERRORs reported on platforms using clang and Sparc
Solaris.
- get_mon_*()functions accept a single simulation
environment as well as a list of environments representing several
replications (5ee2725). A new column (- replication) in the
resulting data frame indicates the corresponding replication
number.
- Monitoring subsystem refactored (as a consequence of #38).
simmer 3.1.1
New features:
- Add attributes to arrivals and new set_attribute()activity (#16).
- New rollback()activity (#17 and #22).
- Add priorities to resources’ queue (#20).
Minor changes and fixes:
- Performance improvements with Boost (1b654fd).
- Fix arrivals’ timing issues (#24).
- Nicer object printing (#26).
- Return selfvisibly, instead of invisibly (#35).
- Add at()andfrom()convenience functions
(29cccd2 and 7cfdd90).
- Some work on vignettes (#29).
- Fix ggplot2 2.0.0 compatibility issues (#37).
simmer 3.0.1
Minor changes and fixes:
- Complete test coverage (#12).
- Minor fix in the documentation (42363d2).
- Set finalizer in the simulator object (#14).
- Fix test errors under Windows r-oldrelease (#15).
simmer 3.0.0
New features:
- First major release submitted to CRAN. The philosophy and workflow
of the pre-release remain with a more robust event-based C++ backend and
a more flexible frontend.
- Enhanced programmability. The timeout activity is
more than just a delay. It admits a user-defined function, which can be
as complex as needed in order to interact with the simulation model. The
old v2.0 was no more than a queueing network simulator. This feature
makes simmer a flexible and generic DES framework. Moreover, we have
finally got rid of the infamous add_skip_event()function
to implement a more flexible and user-friendly branching method.
- Robustness. The event-based core design is rigorous
and simple, which makes simmer faster and less error-prone, at the same
level of other state-of-the-art DES frameworks.
- Much better performance. Instead of creating
narrivals beforehand, this release leverages the concept
of generator of arrivals, which is faster and more flexible. At
the same time, the concept of trajectory as a chain of
activities is implemented entirely in C++ internally. Our tests show
that simmer is even faster than SimPy when it comes to simulate queueing
networks.
- Replication. In the pre-release, replication was
implemented inside simmer. This no longer makes sense since, with the
current design, it is more than straightforward to replicate and even
parallelize the execution of replicas using standard R tools.