aivika 1.2.1 → 1.3
raw patch · 6 files changed
+17/−94 lines, 6 filesPVP ok
version bump matches the API change (PVP)
API changes (from Hackage documentation)
- Simulation.Aivika.Processor: simpleProcessor :: (a -> Process b) -> Processor a b
- Simulation.Aivika.Processor: statefulProcessor :: s -> ((s, a) -> Process (s, b)) -> Processor a b
- Simulation.Aivika.Server: newServerWithState :: s -> ((s, a) -> Process (s, b)) -> Simulation (Server s a b)
- Simulation.Aivika.Stream: splitStreamQueuing :: EnqueueStrategy s q => s -> Int -> Stream a -> Simulation [Stream a]
Files
- Simulation/Aivika/Processor.hs +0/−14
- Simulation/Aivika/Server.hs +1/−14
- Simulation/Aivika/Stream.hs +0/−14
- aivika.cabal +16/−33
- doc/aivika.pdf binary
- examples/README +0/−19
Simulation/Aivika/Processor.hs view
@@ -16,8 +16,6 @@ emptyProcessor, arrProcessor, accumProcessor,- simpleProcessor,- statefulProcessor, -- * Specifying Identifier processorUsingId, -- * Prefetch Processor@@ -141,18 +139,6 @@ do (a, xs') <- runStream xs (acc', b) <- f acc a return (b, Cons $ loop xs' acc') ---- | Create a simple processor by the specified handling function--- that runs the discontinuous process for each input value to get the output.-simpleProcessor :: (a -> Process b) -> Processor a b-{-# DEPRECATED simpleProcessor "Use arrProcessor instead" #-}-simpleProcessor = Processor . mapStreamM---- | Like 'simpleProcessor' but allows creating a processor that has a state--- which is passed in to every new iteration.-statefulProcessor :: s -> ((s, a) -> Process (s, b)) -> Processor a b-{-# DEPRECATED statefulProcessor "Use accumProcessor instead" #-}-statefulProcessor s f = accumProcessor (\acc a -> f (s, a)) s -- | Create a processor that will use the specified process identifier. -- It can be useful to refer to the underlying 'Process' computation which
Simulation/Aivika/Server.hs view
@@ -13,7 +13,6 @@ Server, newServer, newStateServer,- newServerWithState, -- * Processing serverProcessor, -- * Server Properties and Activities@@ -111,7 +110,7 @@ -- ^ provide an output by the specified input -> Simulation (Server () a b) newServer provide =- newServerWithState () $ \(s, a) ->+ flip newStateServer () $ \s a -> do b <- provide a return (s, b) @@ -148,18 +147,6 @@ serverTaskProcessedSource = s2, serverOutputProvidedSource = s3 } return server---- | Create a new server that can provide output @b@ by input @a@--- starting from state @s@. Also it returns the corresponded processor--- that being applied updates the server state.-newServerWithState :: s- -- ^ the initial state- -> ((s, a) -> Process (s, b))- -- ^ provide an output by the specified input- -- and update the state - -> Simulation (Server s a b)-{-# DEPRECATED newServerWithState "Use newStateServer instead" #-}-newServerWithState state provide = newStateServer (curry provide) state -- | Return a processor for the specified server. --
Simulation/Aivika/Stream.hs view
@@ -21,7 +21,6 @@ concatQueuedStreams, concatPriorityStreams, splitStream,- splitStreamQueuing, splitStreamQueueing, splitStreamPrioritising, -- * Specifying Identifier@@ -300,19 +299,6 @@ liftIO $ writeIORef ref xs return a return $ map (\i -> repeatProcess reader) [1..n]---- | It was renamed to 'splitStreamQueueing'.-{-# DEPRECATED splitStreamQueuing "Use splitStreamQueueing instead" #-}-splitStreamQueuing :: EnqueueStrategy s q- => s- -- ^ the strategy applied for enqueuing the output requests- -> Int- -- ^ the number of output streams- -> Stream a- -- ^ the input stream- -> Simulation [Stream a]- -- ^ the splitted output streams-splitStreamQueuing = splitStreamQueueing -- | Split the input stream into a list of output streams -- using the specified priorities.
aivika.cabal view
@@ -1,10 +1,9 @@ name: aivika-version: 1.2.1+version: 1.3 synopsis: A multi-paradigm simulation library description: Aivika is a multi-paradigm simulation library with a strong emphasis- on the Discrete Event Simulation (DES) in the first order and - System Dynamics (SD) in the second one.+ on Discrete Event Simulation (DES) and System Dynamics (SD). . The library has the following features: .@@ -18,21 +17,15 @@ with an ability to resume, suspend and cancel the discontinuous processes; .- * allows working with the resources (you can define your own behaviour- or use the predefined queue strategies);+ * allows working with the resources based on specified queue strategies + (FCFS\/FIFO, LCFS\/LIFO, SIRO, static priorities and so on); .- * allows customizing the queues (you can define your own behaviour- or use the predefined queue strategies);+ * allows customizing the infinite and finite queues based on strategies too; .- * allows defining an infinite stream of data based on the- process-oriented computation, where we can define a complex enough+ * allows defining a queue network based on infinite streams of data+ and their processors, where we can define a complex enough behaviour just in a few lines of code; .- * allows defining processors (actually, the Haskell arrows) that- operate on the infinite streams of data, because of which some models- can remind of their high-level graphical representation on the- diagram used by visual simulation software tools;- . * allows simulating circuits with recursive links and delays; . * supports the activity-oriented paradigm of DES;@@ -40,24 +33,21 @@ * supports the basic constructs for the agent-based modeling; . * allows creating combined discrete-continuous models as all parts- of the library are very well integrated and this is reflected- directly in the type system;+ of the library are well integrated and this is reflected directly + in the type system; .- * the arrays of simulation variables are inherently supported - (this is mostly a feature of Haskell itself);+ * the arrays of simulation variables are inherently supported; . * supports the Monte-Carlo simulation; . * the simulation model can depend on external parameters; .- * uses extensively the signals to notify the model about changing - the reference and variable values;+ * uses extensively signals for notification; . * allows gathering statistics in time points; .- * hides the technical details in high-level simulation monads- and even one arrow (some of these monads support the recursive - do-notation).+ * hides technical details in high-level simulation computations+ (monads and arrows). . Aivika itself is a light-weight engine with minimal dependencies. However, it has additional packages Aivika Experiment [1] and @@ -78,20 +68,16 @@ . All three libraries were tested on Linux, Windows and OS X. .- Please read the PDF document An Introduction to - Aivika Simulation Library [3] for more details, although it is- outdated and contains a very basic description only. The most powerful- features of Aivika are not yet described in this PDF document.+ The PDF documentation is available on the Aivika Wiki [3] website. . \[1] <http://hackage.haskell.org/package/aivika-experiment> . \[2] <http://hackage.haskell.org/package/aivika-experiment-chart> .- \[3] <https://github.com/dsorokin/aivika/blob/master/doc/aivika.pdf>+ \[3] <https://github.com/dsorokin/aivika/wiki> . P.S. Aivika is actually a genuine female Mari name which is pronounced - with stress on the last syllable as in French, but the Russians usually - pronounce it wrong :)+ with stress on the last syllable. category: Simulation license: BSD3 license-file: LICENSE@@ -118,9 +104,6 @@ examples/TimeOut.hs examples/TimeOutInt.hs examples/TimeOutWait.hs- examples/README--data-files: doc/aivika.pdf library
− doc/aivika.pdf
binary file changed (438695 → absent bytes)
− examples/README
@@ -1,19 +0,0 @@-More examples are bundled with packages aivika-experiment and aivika-experiment-chart. -They plot charts, save the simulation results in the CSV files and generate -HTML web pages which can be observed in your favourite Internet browser.--Some examples define a parametric Monte-Carlo simulation, after which the deviation -charts and histograms are plotted, for example.--The reason why these packages are separated is that they have more heavy dependencies-while the engine itself is very light-weight and compact. But the additional packages -should work on Linux, Windows and OS X. I tested on all three platforms.--Also you may find more examples on GitHub by the following link:--https://github.com/dsorokin/aivika-models--I'm going to add new models to that Git repository. At least, one of them will use-arrays or vectors. --July 18, 2013