| Copyright | Copyright (c) 2009-2017 David Sorokin <david.sorokin@gmail.com> |
|---|---|
| License | BSD3 |
| Maintainer | David Sorokin <david.sorokin@gmail.com> |
| Stability | experimental |
| Safe Haskell | None |
| Language | Haskell2010 |
Simulation.Aivika.QueueStrategy
Description
Tested with: GHC 8.0.1
This module defines the queue strategies.
Synopsis
- class QueueStrategy s where
- data StrategyQueue s :: Type -> Type
- newStrategyQueue :: s -> Simulation (StrategyQueue s i)
- strategyQueueNull :: StrategyQueue s i -> Event Bool
- class QueueStrategy s => DequeueStrategy s where
- strategyDequeue :: StrategyQueue s i -> Event i
- class DequeueStrategy s => EnqueueStrategy s where
- strategyEnqueue :: StrategyQueue s i -> i -> Event ()
- class DequeueStrategy s => PriorityQueueStrategy s p | s -> p where
- strategyEnqueueWithPriority :: StrategyQueue s i -> p -> i -> Event ()
- class DequeueStrategy s => DeletingQueueStrategy s where
- strategyQueueDelete :: Eq i => StrategyQueue s i -> i -> Event Bool
- strategyQueueDeleteBy :: StrategyQueue s i -> (i -> Bool) -> Event (Maybe i)
- strategyQueueContains :: Eq i => StrategyQueue s i -> i -> Event Bool
- strategyQueueContainsBy :: StrategyQueue s i -> (i -> Bool) -> Event (Maybe i)
- data FCFS = FCFS
- data LCFS = LCFS
- data SIRO = SIRO
- data StaticPriorities = StaticPriorities
Documentation
class QueueStrategy s where Source #
Defines the basic queue strategy.
Methods
Arguments
| :: s | the strategy |
| -> Simulation (StrategyQueue s i) | a new queue |
Create a new queue by the specified strategy.
Arguments
| :: StrategyQueue s i | the queue |
| -> Event Bool | the result of the test |
Test whether the queue is empty.
Instances
class QueueStrategy s => DequeueStrategy s where Source #
Defines a strategy with support of the dequeuing operation.
Methods
Arguments
| :: StrategyQueue s i | the queue |
| -> Event i | the dequeued element |
Dequeue the front element and return it.
Instances
| DequeueStrategy FCFS Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyDequeue :: StrategyQueue FCFS i -> Event i Source # | |
| DequeueStrategy LCFS Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyDequeue :: StrategyQueue LCFS i -> Event i Source # | |
| DequeueStrategy SIRO Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyDequeue :: StrategyQueue SIRO i -> Event i Source # | |
| DequeueStrategy StaticPriorities Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyDequeue :: StrategyQueue StaticPriorities i -> Event i Source # | |
class DequeueStrategy s => EnqueueStrategy s where Source #
It defines a strategy when we can enqueue a single element.
Methods
Arguments
| :: StrategyQueue s i | the queue |
| -> i | the element to be enqueued |
| -> Event () | the action of enqueuing |
Enqueue an element.
Instances
| EnqueueStrategy FCFS Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyEnqueue :: StrategyQueue FCFS i -> i -> Event () Source # | |
| EnqueueStrategy LCFS Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyEnqueue :: StrategyQueue LCFS i -> i -> Event () Source # | |
| EnqueueStrategy SIRO Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyEnqueue :: StrategyQueue SIRO i -> i -> Event () Source # | |
class DequeueStrategy s => PriorityQueueStrategy s p | s -> p where Source #
It defines a strategy when we can enqueue an element with the specified priority.
Methods
strategyEnqueueWithPriority Source #
Arguments
| :: StrategyQueue s i | the queue |
| -> p | the priority |
| -> i | the element to be enqueued |
| -> Event () | the action of enqueuing |
Enqueue an element with the specified priority.
Instances
| PriorityQueueStrategy StaticPriorities Double Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyEnqueueWithPriority :: StrategyQueue StaticPriorities i -> Double -> i -> Event () Source # | |
class DequeueStrategy s => DeletingQueueStrategy s where Source #
Defines a strategy with support of the deleting operation.
Minimal complete definition
Methods
Arguments
| :: Eq i | |
| => StrategyQueue s i | the queue |
| -> i | the element |
| -> Event Bool | whether the element was found and removed |
Remove the element and return a flag indicating whether the element was found and removed.
strategyQueueDeleteBy Source #
Arguments
| :: StrategyQueue s i | the queue |
| -> (i -> Bool) | the predicate |
| -> Event (Maybe i) | the element if it was found and removed |
Remove an element satisfying the predicate and return the element if found.
strategyQueueContains Source #
Arguments
| :: Eq i | |
| => StrategyQueue s i | the queue |
| -> i | the element to find |
| -> Event Bool | whether the element is contained in the queue |
Detect whether the specified element is contained in the queue.
strategyQueueContainsBy Source #
Arguments
| :: StrategyQueue s i | the queue |
| -> (i -> Bool) | the predicate |
| -> Event (Maybe i) | the element if it was found |
Detect whether an element satifying the specified predicate is contained in the queue.
Instances
| DeletingQueueStrategy FCFS Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyQueueDelete :: Eq i => StrategyQueue FCFS i -> i -> Event Bool Source # strategyQueueDeleteBy :: StrategyQueue FCFS i -> (i -> Bool) -> Event (Maybe i) Source # strategyQueueContains :: Eq i => StrategyQueue FCFS i -> i -> Event Bool Source # strategyQueueContainsBy :: StrategyQueue FCFS i -> (i -> Bool) -> Event (Maybe i) Source # | |
| DeletingQueueStrategy LCFS Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyQueueDelete :: Eq i => StrategyQueue LCFS i -> i -> Event Bool Source # strategyQueueDeleteBy :: StrategyQueue LCFS i -> (i -> Bool) -> Event (Maybe i) Source # strategyQueueContains :: Eq i => StrategyQueue LCFS i -> i -> Event Bool Source # strategyQueueContainsBy :: StrategyQueue LCFS i -> (i -> Bool) -> Event (Maybe i) Source # | |
| DeletingQueueStrategy SIRO Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyQueueDelete :: Eq i => StrategyQueue SIRO i -> i -> Event Bool Source # strategyQueueDeleteBy :: StrategyQueue SIRO i -> (i -> Bool) -> Event (Maybe i) Source # strategyQueueContains :: Eq i => StrategyQueue SIRO i -> i -> Event Bool Source # strategyQueueContainsBy :: StrategyQueue SIRO i -> (i -> Bool) -> Event (Maybe i) Source # | |
| DeletingQueueStrategy StaticPriorities Source # | An implementation of the |
Defined in Simulation.Aivika.QueueStrategy Methods strategyQueueDelete :: Eq i => StrategyQueue StaticPriorities i -> i -> Event Bool Source # strategyQueueDeleteBy :: StrategyQueue StaticPriorities i -> (i -> Bool) -> Event (Maybe i) Source # strategyQueueContains :: Eq i => StrategyQueue StaticPriorities i -> i -> Event Bool Source # strategyQueueContainsBy :: StrategyQueue StaticPriorities i -> (i -> Bool) -> Event (Maybe i) Source # | |
Strategy: First Come - First Served (FCFS).
Constructors
| FCFS |
Instances
| DeletingQueueStrategy FCFS Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyQueueDelete :: Eq i => StrategyQueue FCFS i -> i -> Event Bool Source # strategyQueueDeleteBy :: StrategyQueue FCFS i -> (i -> Bool) -> Event (Maybe i) Source # strategyQueueContains :: Eq i => StrategyQueue FCFS i -> i -> Event Bool Source # strategyQueueContainsBy :: StrategyQueue FCFS i -> (i -> Bool) -> Event (Maybe i) Source # | |||||
| DequeueStrategy FCFS Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyDequeue :: StrategyQueue FCFS i -> Event i Source # | |||||
| EnqueueStrategy FCFS Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyEnqueue :: StrategyQueue FCFS i -> i -> Event () Source # | |||||
| QueueStrategy FCFS Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Associated Types
Methods newStrategyQueue :: FCFS -> Simulation (StrategyQueue FCFS i) Source # strategyQueueNull :: StrategyQueue FCFS i -> Event Bool Source # | |||||
| Show FCFS Source # | |||||
| Eq FCFS Source # | |||||
| Ord FCFS Source # | |||||
| ResultItemable (ResultValue FCFS) Source # | |||||
Defined in Simulation.Aivika.Results Methods resultItemName :: ResultValue FCFS -> ResultName Source # resultItemNamePath :: ResultValue FCFS -> [ResultName] Source # resultItemId :: ResultValue FCFS -> ResultId Source # resultItemIdPath :: ResultValue FCFS -> [ResultId] Source # resultItemSignal :: ResultValue FCFS -> ResultSignal Source # resultItemExpansion :: ResultValue FCFS -> ResultSource Source # resultItemSummary :: ResultValue FCFS -> ResultSource Source # resultItemAsIntValue :: ResultValue FCFS -> Maybe (ResultValue Int) Source # resultItemAsIntListValue :: ResultValue FCFS -> Maybe (ResultValue [Int]) Source # resultItemAsIntStatsValue :: ResultValue FCFS -> Maybe (ResultValue (SamplingStats Int)) Source # resultItemAsIntTimingStatsValue :: ResultValue FCFS -> Maybe (ResultValue (TimingStats Int)) Source # resultItemAsDoubleValue :: ResultValue FCFS -> Maybe (ResultValue Double) Source # resultItemAsDoubleListValue :: ResultValue FCFS -> Maybe (ResultValue [Double]) Source # resultItemAsDoubleStatsValue :: ResultValue FCFS -> Maybe (ResultValue (SamplingStats Double)) Source # resultItemAsDoubleTimingStatsValue :: ResultValue FCFS -> Maybe (ResultValue (TimingStats Double)) Source # resultItemAsStringValue :: ResultValue FCFS -> Maybe (ResultValue String) Source # | |||||
| newtype StrategyQueue FCFS i Source # | |||||
Defined in Simulation.Aivika.QueueStrategy | |||||
Strategy: Last Come - First Served (LCFS)
Constructors
| LCFS |
Instances
| DeletingQueueStrategy LCFS Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyQueueDelete :: Eq i => StrategyQueue LCFS i -> i -> Event Bool Source # strategyQueueDeleteBy :: StrategyQueue LCFS i -> (i -> Bool) -> Event (Maybe i) Source # strategyQueueContains :: Eq i => StrategyQueue LCFS i -> i -> Event Bool Source # strategyQueueContainsBy :: StrategyQueue LCFS i -> (i -> Bool) -> Event (Maybe i) Source # | |||||
| DequeueStrategy LCFS Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyDequeue :: StrategyQueue LCFS i -> Event i Source # | |||||
| EnqueueStrategy LCFS Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyEnqueue :: StrategyQueue LCFS i -> i -> Event () Source # | |||||
| QueueStrategy LCFS Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Associated Types
Methods newStrategyQueue :: LCFS -> Simulation (StrategyQueue LCFS i) Source # strategyQueueNull :: StrategyQueue LCFS i -> Event Bool Source # | |||||
| Show LCFS Source # | |||||
| Eq LCFS Source # | |||||
| Ord LCFS Source # | |||||
| ResultItemable (ResultValue LCFS) Source # | |||||
Defined in Simulation.Aivika.Results Methods resultItemName :: ResultValue LCFS -> ResultName Source # resultItemNamePath :: ResultValue LCFS -> [ResultName] Source # resultItemId :: ResultValue LCFS -> ResultId Source # resultItemIdPath :: ResultValue LCFS -> [ResultId] Source # resultItemSignal :: ResultValue LCFS -> ResultSignal Source # resultItemExpansion :: ResultValue LCFS -> ResultSource Source # resultItemSummary :: ResultValue LCFS -> ResultSource Source # resultItemAsIntValue :: ResultValue LCFS -> Maybe (ResultValue Int) Source # resultItemAsIntListValue :: ResultValue LCFS -> Maybe (ResultValue [Int]) Source # resultItemAsIntStatsValue :: ResultValue LCFS -> Maybe (ResultValue (SamplingStats Int)) Source # resultItemAsIntTimingStatsValue :: ResultValue LCFS -> Maybe (ResultValue (TimingStats Int)) Source # resultItemAsDoubleValue :: ResultValue LCFS -> Maybe (ResultValue Double) Source # resultItemAsDoubleListValue :: ResultValue LCFS -> Maybe (ResultValue [Double]) Source # resultItemAsDoubleStatsValue :: ResultValue LCFS -> Maybe (ResultValue (SamplingStats Double)) Source # resultItemAsDoubleTimingStatsValue :: ResultValue LCFS -> Maybe (ResultValue (TimingStats Double)) Source # resultItemAsStringValue :: ResultValue LCFS -> Maybe (ResultValue String) Source # | |||||
| newtype StrategyQueue LCFS i Source # | |||||
Defined in Simulation.Aivika.QueueStrategy | |||||
Strategy: Service in Random Order (SIRO).
Constructors
| SIRO |
Instances
| DeletingQueueStrategy SIRO Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyQueueDelete :: Eq i => StrategyQueue SIRO i -> i -> Event Bool Source # strategyQueueDeleteBy :: StrategyQueue SIRO i -> (i -> Bool) -> Event (Maybe i) Source # strategyQueueContains :: Eq i => StrategyQueue SIRO i -> i -> Event Bool Source # strategyQueueContainsBy :: StrategyQueue SIRO i -> (i -> Bool) -> Event (Maybe i) Source # | |||||
| DequeueStrategy SIRO Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyDequeue :: StrategyQueue SIRO i -> Event i Source # | |||||
| EnqueueStrategy SIRO Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyEnqueue :: StrategyQueue SIRO i -> i -> Event () Source # | |||||
| QueueStrategy SIRO Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Associated Types
Methods newStrategyQueue :: SIRO -> Simulation (StrategyQueue SIRO i) Source # strategyQueueNull :: StrategyQueue SIRO i -> Event Bool Source # | |||||
| Show SIRO Source # | |||||
| Eq SIRO Source # | |||||
| Ord SIRO Source # | |||||
| ResultItemable (ResultValue SIRO) Source # | |||||
Defined in Simulation.Aivika.Results Methods resultItemName :: ResultValue SIRO -> ResultName Source # resultItemNamePath :: ResultValue SIRO -> [ResultName] Source # resultItemId :: ResultValue SIRO -> ResultId Source # resultItemIdPath :: ResultValue SIRO -> [ResultId] Source # resultItemSignal :: ResultValue SIRO -> ResultSignal Source # resultItemExpansion :: ResultValue SIRO -> ResultSource Source # resultItemSummary :: ResultValue SIRO -> ResultSource Source # resultItemAsIntValue :: ResultValue SIRO -> Maybe (ResultValue Int) Source # resultItemAsIntListValue :: ResultValue SIRO -> Maybe (ResultValue [Int]) Source # resultItemAsIntStatsValue :: ResultValue SIRO -> Maybe (ResultValue (SamplingStats Int)) Source # resultItemAsIntTimingStatsValue :: ResultValue SIRO -> Maybe (ResultValue (TimingStats Int)) Source # resultItemAsDoubleValue :: ResultValue SIRO -> Maybe (ResultValue Double) Source # resultItemAsDoubleListValue :: ResultValue SIRO -> Maybe (ResultValue [Double]) Source # resultItemAsDoubleStatsValue :: ResultValue SIRO -> Maybe (ResultValue (SamplingStats Double)) Source # resultItemAsDoubleTimingStatsValue :: ResultValue SIRO -> Maybe (ResultValue (TimingStats Double)) Source # resultItemAsStringValue :: ResultValue SIRO -> Maybe (ResultValue String) Source # | |||||
| newtype StrategyQueue SIRO i Source # | |||||
Defined in Simulation.Aivika.QueueStrategy | |||||
data StaticPriorities Source #
Strategy: Static Priorities. It uses the priority queue.
Constructors
| StaticPriorities |
Instances
| DeletingQueueStrategy StaticPriorities Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyQueueDelete :: Eq i => StrategyQueue StaticPriorities i -> i -> Event Bool Source # strategyQueueDeleteBy :: StrategyQueue StaticPriorities i -> (i -> Bool) -> Event (Maybe i) Source # strategyQueueContains :: Eq i => StrategyQueue StaticPriorities i -> i -> Event Bool Source # strategyQueueContainsBy :: StrategyQueue StaticPriorities i -> (i -> Bool) -> Event (Maybe i) Source # | |||||
| DequeueStrategy StaticPriorities Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyDequeue :: StrategyQueue StaticPriorities i -> Event i Source # | |||||
| QueueStrategy StaticPriorities Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Associated Types
Methods newStrategyQueue :: StaticPriorities -> Simulation (StrategyQueue StaticPriorities i) Source # strategyQueueNull :: StrategyQueue StaticPriorities i -> Event Bool Source # | |||||
| Show StaticPriorities Source # | |||||
Defined in Simulation.Aivika.QueueStrategy Methods showsPrec :: Int -> StaticPriorities -> ShowS # show :: StaticPriorities -> String # showList :: [StaticPriorities] -> ShowS # | |||||
| Eq StaticPriorities Source # | |||||
Defined in Simulation.Aivika.QueueStrategy Methods (==) :: StaticPriorities -> StaticPriorities -> Bool # (/=) :: StaticPriorities -> StaticPriorities -> Bool # | |||||
| Ord StaticPriorities Source # | |||||
Defined in Simulation.Aivika.QueueStrategy Methods compare :: StaticPriorities -> StaticPriorities -> Ordering # (<) :: StaticPriorities -> StaticPriorities -> Bool # (<=) :: StaticPriorities -> StaticPriorities -> Bool # (>) :: StaticPriorities -> StaticPriorities -> Bool # (>=) :: StaticPriorities -> StaticPriorities -> Bool # max :: StaticPriorities -> StaticPriorities -> StaticPriorities # min :: StaticPriorities -> StaticPriorities -> StaticPriorities # | |||||
| PriorityQueueStrategy StaticPriorities Double Source # | An implementation of the | ||||
Defined in Simulation.Aivika.QueueStrategy Methods strategyEnqueueWithPriority :: StrategyQueue StaticPriorities i -> Double -> i -> Event () Source # | |||||
| ResultItemable (ResultValue StaticPriorities) Source # | |||||
Defined in Simulation.Aivika.Results Methods resultItemName :: ResultValue StaticPriorities -> ResultName Source # resultItemNamePath :: ResultValue StaticPriorities -> [ResultName] Source # resultItemId :: ResultValue StaticPriorities -> ResultId Source # resultItemIdPath :: ResultValue StaticPriorities -> [ResultId] Source # resultItemSignal :: ResultValue StaticPriorities -> ResultSignal Source # resultItemExpansion :: ResultValue StaticPriorities -> ResultSource Source # resultItemSummary :: ResultValue StaticPriorities -> ResultSource Source # resultItemAsIntValue :: ResultValue StaticPriorities -> Maybe (ResultValue Int) Source # resultItemAsIntListValue :: ResultValue StaticPriorities -> Maybe (ResultValue [Int]) Source # resultItemAsIntStatsValue :: ResultValue StaticPriorities -> Maybe (ResultValue (SamplingStats Int)) Source # resultItemAsIntTimingStatsValue :: ResultValue StaticPriorities -> Maybe (ResultValue (TimingStats Int)) Source # resultItemAsDoubleValue :: ResultValue StaticPriorities -> Maybe (ResultValue Double) Source # resultItemAsDoubleListValue :: ResultValue StaticPriorities -> Maybe (ResultValue [Double]) Source # resultItemAsDoubleStatsValue :: ResultValue StaticPriorities -> Maybe (ResultValue (SamplingStats Double)) Source # resultItemAsDoubleTimingStatsValue :: ResultValue StaticPriorities -> Maybe (ResultValue (TimingStats Double)) Source # resultItemAsStringValue :: ResultValue StaticPriorities -> Maybe (ResultValue String) Source # | |||||
| newtype StrategyQueue StaticPriorities i Source # | |||||
Defined in Simulation.Aivika.QueueStrategy | |||||