aivika-gpss: GPSS-like DSL for Aivika
This is a package candidate release! Here you can preview how this package release will appear once published to the main package index (which can be accomplished via the 'maintain' link below). Please note that once a package has been published to the main package index it cannot be undone! Please consult the package uploading documentation for more information.
Warnings:
- 'ghc-options: -O2' is rarely needed. Check that it is giving a real benefit and not just imposing longer compile times on your users.
- These packages miss upper bounds: - aivika - aivika-transformers - containers - hashable - mtl - unordered-containers Please add them, using `cabal gen-bounds` for suggestions. For more information see: https://pvp.haskell.org/
This package allows defining simulation models in terms of a GPSS-like domain specific language, which can be useful if you are going to translate your models from GPSS into Aivika [1, 2].
Note that the GPSS-like domain specific language is not equivalent to the original GPSS language, but it may return very similar results in some cases, while it can also return quite different results in other cases.
The package implements the most of GPSS simulation blocks, but the main difference is as follows.
Like GPSS, the package tries to treat the transact priorities properly within each block. Here it works in a very similar way even for such non-trivial blocks as PREEMPT, GATHER and ASSEMBLE. But unlike GPSS, the blocks behave independently from each other, where the transact priorities are not used when deciding which of the blocks will be activated next. The order of activating the blocks is unpredictable.
There is a layer of emulation. The package creates a new discontinuous process for each new transact. Then that process becomes fully responsible for processing the transact by the blocks. Therefore, the speed of simulation is slower than it could be when implementing the same model but based on using the standard Aivika facilities.
The rough estimation is that this particular package is slower in 2-3 times than the existent GPSS simulators in case of sequential simulation. But the point is that you can combine GPSS with discontinuous processes, events and even agents within the same model. Moreover, you can use GPSS in parallel and distributed simulation models.
Finally, you can use the following prepared example [3].
[1] http://hackage.haskell.org/package/aivika
Properties
Versions | 0.3, 0.4, 0.5, 0.6, 0.6.1, 0.6.2, 0.7.0, 0.7.1 |
---|---|
Change log | CHANGELOG.md |
Dependencies | aivika (>=6.0.0), aivika-transformers (>=6.0.0), base (>=4.2 && <6), containers (>=0.4.0.0), hashable (>=1.2.0.0), mtl (>=1.1.0.2), unordered-containers (>=0.1.0.0) [details] |
License | BSD-3-Clause |
Copyright | (c) 2017-2018. David Sorokin <david.sorokin@gmail.com> |
Author | David Sorokin |
Maintainer | David Sorokin <david.sorokin@gmail.com> |
Category | Simulation |
Home page | http://www.aivikasoft.com |
Source repo | head: git clone https://github.com/dsorokin/aivika-gpss |
Uploaded | by DavidSorokin at 2023-10-14T11:56:34Z |
Modules
- Simulation
- Aivika
- Simulation.Aivika.GPSS
- Simulation.Aivika.GPSS.AssemblySet
- Simulation.Aivika.GPSS.Block
- Simulation.Aivika.GPSS.Block.Advance
- Simulation.Aivika.GPSS.Block.Assemble
- Simulation.Aivika.GPSS.Block.Assign
- Simulation.Aivika.GPSS.Block.Depart
- Simulation.Aivika.GPSS.Block.Enter
- Simulation.Aivika.GPSS.Block.Gather
- Simulation.Aivika.GPSS.Block.Generate
- Simulation.Aivika.GPSS.Block.Leave
- Simulation.Aivika.GPSS.Block.Link
- Simulation.Aivika.GPSS.Block.Loop
- Simulation.Aivika.GPSS.Block.Match
- Simulation.Aivika.GPSS.Block.Preempt
- Simulation.Aivika.GPSS.Block.Priority
- Simulation.Aivika.GPSS.Block.Queue
- Simulation.Aivika.GPSS.Block.Release
- Simulation.Aivika.GPSS.Block.Return
- Simulation.Aivika.GPSS.Block.Seize
- Simulation.Aivika.GPSS.Block.Split
- Simulation.Aivika.GPSS.Block.Terminate
- Simulation.Aivika.GPSS.Block.Test
- Simulation.Aivika.GPSS.Block.Transfer
- Simulation.Aivika.GPSS.Block.Unlink
- Simulation.Aivika.GPSS.Facility
- Simulation.Aivika.GPSS.MatchChain
- Simulation.Aivika.GPSS.Queue
- Simulation.Aivika.GPSS.Results
- Simulation.Aivika.GPSS.Results.Locale
- Simulation.Aivika.GPSS.Results.Transform
- Simulation.Aivika.GPSS.Storage
- Simulation.Aivika.GPSS.Transact
- Simulation.Aivika.GPSS.TransactQueueStrategy
- Trans
- Simulation.Aivika.Trans.GPSS
- Simulation.Aivika.Trans.GPSS.AssemblySet
- Simulation.Aivika.Trans.GPSS.Block
- Simulation.Aivika.Trans.GPSS.Block.Advance
- Simulation.Aivika.Trans.GPSS.Block.Assemble
- Simulation.Aivika.Trans.GPSS.Block.Assign
- Simulation.Aivika.Trans.GPSS.Block.Depart
- Simulation.Aivika.Trans.GPSS.Block.Enter
- Simulation.Aivika.Trans.GPSS.Block.Gather
- Simulation.Aivika.Trans.GPSS.Block.Generate
- Simulation.Aivika.Trans.GPSS.Block.Leave
- Simulation.Aivika.Trans.GPSS.Block.Link
- Simulation.Aivika.Trans.GPSS.Block.Loop
- Simulation.Aivika.Trans.GPSS.Block.Match
- Simulation.Aivika.Trans.GPSS.Block.Preempt
- Simulation.Aivika.Trans.GPSS.Block.Priority
- Simulation.Aivika.Trans.GPSS.Block.Queue
- Simulation.Aivika.Trans.GPSS.Block.Release
- Simulation.Aivika.Trans.GPSS.Block.Return
- Simulation.Aivika.Trans.GPSS.Block.Seize
- Simulation.Aivika.Trans.GPSS.Block.Split
- Simulation.Aivika.Trans.GPSS.Block.Terminate
- Simulation.Aivika.Trans.GPSS.Block.Test
- Simulation.Aivika.Trans.GPSS.Block.Transfer
- Simulation.Aivika.Trans.GPSS.Block.Unlink
- Simulation.Aivika.Trans.GPSS.Facility
- Simulation.Aivika.Trans.GPSS.MatchChain
- Simulation.Aivika.Trans.GPSS.Queue
- Simulation.Aivika.Trans.GPSS.Results
- Simulation.Aivika.Trans.GPSS.Results.Locale
- Simulation.Aivika.Trans.GPSS.Results.Transform
- Simulation.Aivika.Trans.GPSS.Storage
- Simulation.Aivika.Trans.GPSS.Transact
- Simulation.Aivika.Trans.GPSS.TransactQueueStrategy
- Simulation.Aivika.Trans.GPSS
- Simulation.Aivika.GPSS
- Aivika
Downloads
- aivika-gpss-0.7.0.tar.gz [browse] (Cabal source package)
- Package description (as included in the package)
Maintainer's Corner
Package maintainers
For package maintainers and hackage trustees