-- |

module Modelling.PetriNet.PetriFindConcurrency.Config where

import Modelling.PetriNet.Types (
  AdvConfig (..),
  AlloyConfig (..),
  BasicConfig (..),
  ChangeConfig (..),
  GraphConfig (..),
  FindConcurrencyConfig (..),
  )
import Data.GraphViz.Commands           (GraphvizCommand(..))

{-|
points: 0.15
average generation time per instance: 7:00min
CPU usage: 100%
-}
task2023_23 :: FindConcurrencyConfig
task2023_23 :: FindConcurrencyConfig
task2023_23 = FindConcurrencyConfig {
  $sel:basicConfig:FindConcurrencyConfig :: BasicConfig
basicConfig = BasicConfig {
    $sel:places:BasicConfig :: Int
places = Int
6,
    $sel:transitions:BasicConfig :: Int
transitions = Int
6,
    $sel:atLeastActive:BasicConfig :: Int
atLeastActive = Int
5,
    $sel:flowOverall:BasicConfig :: (Int, Int)
flowOverall = (Int
12, Int
14),
    $sel:maxTokensPerPlace:BasicConfig :: Int
maxTokensPerPlace = Int
2,
    $sel:maxFlowPerEdge:BasicConfig :: Int
maxFlowPerEdge = Int
2,
    $sel:tokensOverall:BasicConfig :: (Int, Int)
tokensOverall = (Int
5, Int
5),
    $sel:isConnected:BasicConfig :: Maybe Bool
isConnected = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True
    },
  $sel:advConfig:FindConcurrencyConfig :: AdvConfig
advConfig = AdvConfig {
    $sel:presenceOfSelfLoops:AdvConfig :: Maybe Bool
presenceOfSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    $sel:presenceOfSinkTransitions:AdvConfig :: Maybe Bool
presenceOfSinkTransitions = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
    $sel:presenceOfSourceTransitions:AdvConfig :: Maybe Bool
presenceOfSourceTransitions = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False
    },
  $sel:changeConfig:FindConcurrencyConfig :: ChangeConfig
changeConfig = ChangeConfig {
    $sel:tokenChangeOverall:ChangeConfig :: Int
tokenChangeOverall = Int
0,
    $sel:maxTokenChangePerPlace:ChangeConfig :: Int
maxTokenChangePerPlace = Int
0,
    $sel:flowChangeOverall:ChangeConfig :: Int
flowChangeOverall = Int
2,
    $sel:maxFlowChangePerEdge:ChangeConfig :: Int
maxFlowChangePerEdge = Int
1
    },
  $sel:graphConfig:FindConcurrencyConfig :: GraphConfig
graphConfig = GraphConfig {
    $sel:graphLayouts:GraphConfig :: [GraphvizCommand]
graphLayouts = [GraphvizCommand
Dot],
    $sel:hidePlaceNames:GraphConfig :: Bool
hidePlaceNames = Bool
True,
    $sel:hideTransitionNames:GraphConfig :: Bool
hideTransitionNames = Bool
False,
    $sel:hideWeight1:GraphConfig :: Bool
hideWeight1 = Bool
True
    },
  $sel:printSolution:FindConcurrencyConfig :: Bool
printSolution = Bool
True,
  $sel:alloyConfig:FindConcurrencyConfig :: AlloyConfig
alloyConfig = AlloyConfig {
    $sel:maxInstances:AlloyConfig :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
2000,
    $sel:timeout:AlloyConfig :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing
    },
  $sel:extraText:FindConcurrencyConfig :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.15
average generation time per instance: 12:10min
CPU usage: 103%
-}
task2024_32 :: FindConcurrencyConfig
task2024_32 :: FindConcurrencyConfig
task2024_32 = FindConcurrencyConfig
task2023_23

{-|
points: 0.15
average generation time per instance: 26:15min
CPU usage: 106%
-}
task2024_33 :: FindConcurrencyConfig
task2024_33 :: FindConcurrencyConfig
task2024_33 = FindConcurrencyConfig {
  $sel:basicConfig:FindConcurrencyConfig :: BasicConfig
basicConfig = BasicConfig {
    $sel:places:BasicConfig :: Int
places = Int
6,
    $sel:transitions:BasicConfig :: Int
transitions = Int
6,
    $sel:atLeastActive:BasicConfig :: Int
atLeastActive = Int
5,
    $sel:flowOverall:BasicConfig :: (Int, Int)
flowOverall = (Int
14, Int
16),
    $sel:maxTokensPerPlace:BasicConfig :: Int
maxTokensPerPlace = Int
2,
    $sel:maxFlowPerEdge:BasicConfig :: Int
maxFlowPerEdge = Int
1,
    $sel:tokensOverall:BasicConfig :: (Int, Int)
tokensOverall = (Int
8, Int
8),
    $sel:isConnected:BasicConfig :: Maybe Bool
isConnected = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True
    },
  $sel:advConfig:FindConcurrencyConfig :: AdvConfig
advConfig = AdvConfig {
    $sel:presenceOfSelfLoops:AdvConfig :: Maybe Bool
presenceOfSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
    $sel:presenceOfSinkTransitions:AdvConfig :: Maybe Bool
presenceOfSinkTransitions = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    $sel:presenceOfSourceTransitions:AdvConfig :: Maybe Bool
presenceOfSourceTransitions = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False
    },
  $sel:changeConfig:FindConcurrencyConfig :: ChangeConfig
changeConfig = ChangeConfig {
    $sel:tokenChangeOverall:ChangeConfig :: Int
tokenChangeOverall = Int
0,
    $sel:maxTokenChangePerPlace:ChangeConfig :: Int
maxTokenChangePerPlace = Int
0,
    $sel:flowChangeOverall:ChangeConfig :: Int
flowChangeOverall = Int
2,
    $sel:maxFlowChangePerEdge:ChangeConfig :: Int
maxFlowChangePerEdge = Int
1
    },
  $sel:graphConfig:FindConcurrencyConfig :: GraphConfig
graphConfig = GraphConfig {
    $sel:graphLayouts:GraphConfig :: [GraphvizCommand]
graphLayouts = [GraphvizCommand
TwoPi],
    $sel:hidePlaceNames:GraphConfig :: Bool
hidePlaceNames = Bool
True,
    $sel:hideTransitionNames:GraphConfig :: Bool
hideTransitionNames = Bool
False,
    $sel:hideWeight1:GraphConfig :: Bool
hideWeight1 = Bool
True
    },
  $sel:printSolution:FindConcurrencyConfig :: Bool
printSolution = Bool
True,
  $sel:alloyConfig:FindConcurrencyConfig :: AlloyConfig
alloyConfig = AlloyConfig {
    $sel:maxInstances:AlloyConfig :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
2000,
    $sel:timeout:AlloyConfig :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing
    },
  $sel:extraText:FindConcurrencyConfig :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.08
average generation time per instance: 9:29min
CPU usage: 104%
-}
task2024_62 :: FindConcurrencyConfig
task2024_62 :: FindConcurrencyConfig
task2024_62 = FindConcurrencyConfig {
  $sel:basicConfig:FindConcurrencyConfig :: BasicConfig
basicConfig = BasicConfig {
    $sel:places:BasicConfig :: Int
places = Int
6,
    $sel:transitions:BasicConfig :: Int
transitions = Int
6,
    $sel:atLeastActive:BasicConfig :: Int
atLeastActive = Int
2,
    $sel:flowOverall:BasicConfig :: (Int, Int)
flowOverall = (Int
12, Int
14),
    $sel:maxTokensPerPlace:BasicConfig :: Int
maxTokensPerPlace = Int
0,
    $sel:maxFlowPerEdge:BasicConfig :: Int
maxFlowPerEdge = Int
2,
    $sel:tokensOverall:BasicConfig :: (Int, Int)
tokensOverall = (Int
0, Int
0),
    $sel:isConnected:BasicConfig :: Maybe Bool
isConnected = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True
    },
  $sel:advConfig:FindConcurrencyConfig :: AdvConfig
advConfig = AdvConfig {
    $sel:presenceOfSelfLoops:AdvConfig :: Maybe Bool
presenceOfSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    $sel:presenceOfSinkTransitions:AdvConfig :: Maybe Bool
presenceOfSinkTransitions = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    $sel:presenceOfSourceTransitions:AdvConfig :: Maybe Bool
presenceOfSourceTransitions = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True
    },
  $sel:changeConfig:FindConcurrencyConfig :: ChangeConfig
changeConfig = ChangeConfig {
    $sel:tokenChangeOverall:ChangeConfig :: Int
tokenChangeOverall = Int
0,
    $sel:maxTokenChangePerPlace:ChangeConfig :: Int
maxTokenChangePerPlace = Int
0,
    $sel:flowChangeOverall:ChangeConfig :: Int
flowChangeOverall = Int
2,
    $sel:maxFlowChangePerEdge:ChangeConfig :: Int
maxFlowChangePerEdge = Int
1
    },
  $sel:graphConfig:FindConcurrencyConfig :: GraphConfig
graphConfig = GraphConfig {
    $sel:graphLayouts:GraphConfig :: [GraphvizCommand]
graphLayouts = [GraphvizCommand
Dot],
    $sel:hidePlaceNames:GraphConfig :: Bool
hidePlaceNames = Bool
True,
    $sel:hideTransitionNames:GraphConfig :: Bool
hideTransitionNames = Bool
False,
    $sel:hideWeight1:GraphConfig :: Bool
hideWeight1 = Bool
True
    },
  $sel:printSolution:FindConcurrencyConfig :: Bool
printSolution = Bool
True,
  $sel:alloyConfig:FindConcurrencyConfig :: AlloyConfig
alloyConfig = AlloyConfig {
    $sel:maxInstances:AlloyConfig :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
2000,
    $sel:timeout:AlloyConfig :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing
    },
  $sel:extraText:FindConcurrencyConfig :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.08
average generation time per instance: 24:39min
CPU usage: 109%
-}
task2024_63 :: FindConcurrencyConfig
task2024_63 :: FindConcurrencyConfig
task2024_63 = FindConcurrencyConfig {
  $sel:basicConfig:FindConcurrencyConfig :: BasicConfig
basicConfig = BasicConfig {
    $sel:places:BasicConfig :: Int
places = Int
6,
    $sel:transitions:BasicConfig :: Int
transitions = Int
6,
    $sel:atLeastActive:BasicConfig :: Int
atLeastActive = Int
5,
    $sel:flowOverall:BasicConfig :: (Int, Int)
flowOverall = (Int
14, Int
16),
    $sel:maxTokensPerPlace:BasicConfig :: Int
maxTokensPerPlace = Int
2,
    $sel:maxFlowPerEdge:BasicConfig :: Int
maxFlowPerEdge = Int
1,
    $sel:tokensOverall:BasicConfig :: (Int, Int)
tokensOverall = (Int
8, Int
8),
    $sel:isConnected:BasicConfig :: Maybe Bool
isConnected = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False
    },
  $sel:advConfig:FindConcurrencyConfig :: AdvConfig
advConfig = AdvConfig {
    $sel:presenceOfSelfLoops:AdvConfig :: Maybe Bool
presenceOfSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    $sel:presenceOfSinkTransitions:AdvConfig :: Maybe Bool
presenceOfSinkTransitions = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    $sel:presenceOfSourceTransitions:AdvConfig :: Maybe Bool
presenceOfSourceTransitions = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False
    },
  $sel:changeConfig:FindConcurrencyConfig :: ChangeConfig
changeConfig = ChangeConfig {
    $sel:tokenChangeOverall:ChangeConfig :: Int
tokenChangeOverall = Int
0,
    $sel:maxTokenChangePerPlace:ChangeConfig :: Int
maxTokenChangePerPlace = Int
0,
    $sel:flowChangeOverall:ChangeConfig :: Int
flowChangeOverall = Int
2,
    $sel:maxFlowChangePerEdge:ChangeConfig :: Int
maxFlowChangePerEdge = Int
1
    },
  $sel:graphConfig:FindConcurrencyConfig :: GraphConfig
graphConfig = GraphConfig {
    $sel:graphLayouts:GraphConfig :: [GraphvizCommand]
graphLayouts = [GraphvizCommand
TwoPi],
    $sel:hidePlaceNames:GraphConfig :: Bool
hidePlaceNames = Bool
True,
    $sel:hideTransitionNames:GraphConfig :: Bool
hideTransitionNames = Bool
False,
    $sel:hideWeight1:GraphConfig :: Bool
hideWeight1 = Bool
True
    },
  $sel:printSolution:FindConcurrencyConfig :: Bool
printSolution = Bool
True,
  $sel:alloyConfig:FindConcurrencyConfig :: AlloyConfig
alloyConfig = AlloyConfig {
    $sel:maxInstances:AlloyConfig :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
2000,
    $sel:timeout:AlloyConfig :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing
    },
  $sel:extraText:FindConcurrencyConfig :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }