-- |

module Modelling.CdOd.MatchCdOd.Config where

import Modelling.CdOd.MatchCdOd (
  MatchCdOdConfig (..),
  )
import Modelling.CdOd.Types (
  CdMutation (..),
  ClassConfig (..),
  ObjectConfig (..),
  ObjectProperties (..),
  OmittedDefaultMultiplicities (..),
  RelationshipMutation (..),
  )

import Data.Ratio                       ((%))

{-|
points: 0.15
average generation time per instance: 2:00min
CPU usage: 150%
-}
task2023_14 :: MatchCdOdConfig
task2023_14 :: MatchCdOdConfig
task2023_14 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    CdMutation
AddRelationship,
    CdMutation
RemoveRelationship,
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
ChangeKind,
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
ChangeLimit,
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
Flip
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
10000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
6, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
8),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
6, Int
6)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
1 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
4,
    completelyInhabited :: Maybe Bool
completelyInhabited = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Maybe Bool
forall a. Maybe a
Nothing
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1)
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.15
average generation time per instance: 1:10min
CPU usage: 150%
-}
task2023_15 :: MatchCdOdConfig
task2023_15 :: MatchCdOdConfig
task2023_15 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    CdMutation
AddRelationship,
    CdMutation
RemoveRelationship,
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
ChangeKind,
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
ChangeLimit,
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
Flip
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
4000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
6),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
0, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
3, Int
6)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
1 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
3,
    completelyInhabited :: Maybe Bool
completelyInhabited = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Maybe Bool
forall a. Maybe a
Nothing
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1)
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.15
average generation time per instance: 16:54min
CPU usage: 134%
-}
task2024_17 :: MatchCdOdConfig
task2024_17 :: MatchCdOdConfig
task2024_17 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
ChangeLimit
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
10000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
6, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
8),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
6, Int
6)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
1 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
4,
    completelyInhabited :: Maybe Bool
completelyInhabited = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = Maybe (Int, Maybe Int)
forall a. Maybe a
Nothing
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.15
average generation time per instance: 13:14min
CPU usage: 130%
-}
task2024_18 :: MatchCdOdConfig
task2024_18 :: MatchCdOdConfig
task2024_18 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
Flip
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
10000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
5, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
6),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
0, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
5, Int
6)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
1 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
3,
    completelyInhabited :: Maybe Bool
completelyInhabited = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Maybe Bool
forall a. Maybe a
Nothing,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = Maybe (Int, Maybe Int)
forall a. Maybe a
Nothing
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.15
average generation time per instance: 5:14min
CPU usage: 127%
-}
task2024_19 :: MatchCdOdConfig
task2024_19 :: MatchCdOdConfig
task2024_19 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
ChangeKind
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
10000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
8),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
6, Int
8)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
1 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
3,
    completelyInhabited :: Maybe Bool
completelyInhabited = Maybe Bool
forall a. Maybe a
Nothing,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Maybe Bool
forall a. Maybe a
Nothing,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Maybe Bool
forall a. Maybe a
Nothing
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = Maybe (Int, Maybe Int)
forall a. Maybe a
Nothing
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.15
average generation time per instance: 2:44min
CPU usage: 133%
-}
task2024_20 :: MatchCdOdConfig
task2024_20 :: MatchCdOdConfig
task2024_20 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    CdMutation
AddRelationship
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
6, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
10000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
6, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
8),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
5, Int
6)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
7 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
8,
    completelyInhabited :: Maybe Bool
completelyInhabited = Maybe Bool
forall a. Maybe a
Nothing,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Maybe Bool
forall a. Maybe a
Nothing,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Maybe Bool
forall a. Maybe a
Nothing
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = Maybe (Int, Maybe Int)
forall a. Maybe a
Nothing
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.08
average generation time per instance: 5:56min
CPU usage: 137%
-}
task2024_57 :: MatchCdOdConfig
task2024_57 :: MatchCdOdConfig
task2024_57 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
ChangeLimit
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
10000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
6, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
8),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
6, Int
6)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
1 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
4,
    completelyInhabited :: Maybe Bool
completelyInhabited = Maybe Bool
forall a. Maybe a
Nothing,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Maybe Bool
forall a. Maybe a
Nothing,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Maybe Bool
forall a. Maybe a
Nothing
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = Maybe (Int, Maybe Int)
forall a. Maybe a
Nothing
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.08
average generation time per instance: 7:13min
CPU usage: 141%
-}
task2024_58 :: MatchCdOdConfig
task2024_58 :: MatchCdOdConfig
task2024_58 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
Flip
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
1),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
10000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
5, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
6),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
0, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
5, Int
6)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
1 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
3,
    completelyInhabited :: Maybe Bool
completelyInhabited = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Maybe Bool
forall a. Maybe a
Nothing
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = Maybe (Int, Maybe Int)
forall a. Maybe a
Nothing
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
True,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }

{-|
points: 0.08
average generation time per instance: 6:16min
CPU usage: 146%
-}
task2024_59 :: MatchCdOdConfig
task2024_59 :: MatchCdOdConfig
task2024_59 = MatchCdOdConfig {
  allowedCdMutations :: [CdMutation]
allowedCdMutations = [
    RelationshipMutation -> CdMutation
MutateRelationship RelationshipMutation
ChangeKind
    ],
  classConfig :: ClassConfig
classConfig = ClassConfig {
    classLimits :: (Int, Int)
classLimits = (Int
5, Int
5),
    aggregationLimits :: (Int, Maybe Int)
aggregationLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    associationLimits :: (Int, Maybe Int)
associationLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    compositionLimits :: (Int, Maybe Int)
compositionLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    inheritanceLimits :: (Int, Maybe Int)
inheritanceLimits = (Int
2, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
2),
    relationshipLimits :: (Int, Maybe Int)
relationshipLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
7)
    },
  maxInstances :: Maybe Integer
maxInstances = Integer -> Maybe Integer
forall a. a -> Maybe a
Just Integer
10000,
  objectConfig :: ObjectConfig
objectConfig = ObjectConfig {
    linkLimits :: (Int, Maybe Int)
linkLimits = (Int
7, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
8),
    linksPerObjectLimits :: (Int, Maybe Int)
linksPerObjectLimits = (Int
1, Int -> Maybe Int
forall a. a -> Maybe a
Just Int
4),
    objectLimits :: (Int, Int)
objectLimits = (Int
6, Int
8)
    },
  objectProperties :: ObjectProperties
objectProperties = ObjectProperties {
    anonymousObjectProportion :: Rational
anonymousObjectProportion = Integer
1 Integer -> Integer -> Rational
forall a. Integral a => a -> a -> Ratio a
% Integer
3,
    completelyInhabited :: Maybe Bool
completelyInhabited = Maybe Bool
forall a. Maybe a
Nothing,
    hasLimitedIsolatedObjects :: Bool
hasLimitedIsolatedObjects = Bool
True,
    hasSelfLoops :: Maybe Bool
hasSelfLoops = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
    usesEveryRelationshipName :: Maybe Bool
usesEveryRelationshipName = Maybe Bool
forall a. Maybe a
Nothing
    },
  omittedDefaultMultiplicities :: OmittedDefaultMultiplicities
omittedDefaultMultiplicities = OmittedDefaultMultiplicities {
    aggregationWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
aggregationWholeOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    associationOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
associationOmittedDefaultMultiplicity = (Int, Maybe Int) -> Maybe (Int, Maybe Int)
forall a. a -> Maybe a
Just (Int
0, Maybe Int
forall a. Maybe a
Nothing),
    compositionWholeOmittedDefaultMultiplicity :: Maybe (Int, Maybe Int)
compositionWholeOmittedDefaultMultiplicity = Maybe (Int, Maybe Int)
forall a. Maybe a
Nothing
    },
  printSolution :: Bool
printSolution = Bool
True,
  timeout :: Maybe Int
timeout = Maybe Int
forall a. Maybe a
Nothing,
  withNonTrivialInheritance :: Maybe Bool
withNonTrivialInheritance = Bool -> Maybe Bool
forall a. a -> Maybe a
Just Bool
False,
  extraText :: Maybe (Map Language String)
extraText = Maybe (Map Language String)
forall a. Maybe a
Nothing
  }