PMInstanceGenerator and Evaluation. Thus, factor it out.
module Evaluation where
import PMInstance
+import PMConfig
import ProposalMatcher
import Data.Array.IArray
--- /dev/null
+module PMConfig where
+
+import PMInstance
+import IMinCostFlow
+
+data PMConfig = PMConfig {
+ minCostFlow :: MinCostFlowImpl,
+ reviewsEachProposal :: Int,
+ prefIsExpert :: Wt -> Bool,
+ prefIsKnowledgeable :: Wt -> Bool,
+ prefIsBoring :: Wt -> Bool,
+ prefIsVeryBoring :: Wt -> Bool,
+ prefIsConflict :: Wt -> Bool,
+ loadTolerance :: Int,
+ marginalLoadCost :: Wt -> Wt,
+ marginalBoringCost :: Wt -> Wt,
+ marginalVeryBoringCost :: Wt -> Wt,
+ assignmentCost :: Wt -> Wt,
+ knowledgeableBonus :: Wt,
+ expertBonus :: Wt
+}
module PMDefaults where
import PMInstance
-import ProposalMatcher
+import PMConfig
import qualified NaiveMinCostFlow
import qualified CS2MinCostFlow
import Data.List
import PMInstance
-import IMinCostFlow
-
-data PMConfig = PMConfig {
- minCostFlow :: MinCostFlowImpl,
- reviewsEachProposal :: Int,
- prefIsExpert :: Wt -> Bool,
- prefIsKnowledgeable :: Wt -> Bool,
- prefIsBoring :: Wt -> Bool,
- prefIsVeryBoring :: Wt -> Bool,
- prefIsConflict :: Wt -> Bool,
- loadTolerance :: Int,
- marginalLoadCost :: Wt -> Wt,
- marginalBoringCost :: Wt -> Wt,
- marginalVeryBoringCost :: Wt -> Wt,
- assignmentCost :: Wt -> Wt,
- knowledgeableBonus :: Wt,
- expertBonus :: Wt
-}
+import PMConfig
prefBoringness cfg p = if prefIsVeryBoring cfg p then 2
else if prefIsBoring cfg p then 1 else 0
module Test,
module TestUtils,
+ -- Manipulate configurations.
+ module PMConfig,
+ module PMDefaults,
+
-- Generate instances.
module PMInstance,
module PMInstanceGenerator,
-- Solve instances.
module ProposalMatcher,
- module PMDefaults,
-- Run randomized things.
module System.Random,
module Evaluation
) where
import TestUtils
+import PMConfig
+import PMDefaults
import PMInstance
import PMInstanceGenerator
import ProposalMatcher
-import PMDefaults
import System.Random
import RandomizedMonad
import Evaluation
import System.Posix.Time
import System.Process
import PMInstance
+import PMConfig
import ProposalMatcher
import PMDefaults
import PMInstanceGenerator