From: Matt McCutchen Date: Fri, 1 Aug 2008 21:41:39 +0000 (-0400) Subject: PMConfig isn't just for ProposalMatcher anymore; it's about to gain settings for X-Git-Url: https://mattmccutchen.net/match/match.git/commitdiff_plain/bc14b3b3a9345cb74bc7d8f3808a1d8cdd0bf479 PMConfig isn't just for ProposalMatcher anymore; it's about to gain settings for PMInstanceGenerator and Evaluation. Thus, factor it out. --- diff --git a/program/Evaluation.hs b/program/Evaluation.hs index 2b1fdaf..c93e799 100644 --- a/program/Evaluation.hs +++ b/program/Evaluation.hs @@ -1,5 +1,6 @@ module Evaluation where import PMInstance +import PMConfig import ProposalMatcher import Data.Array.IArray diff --git a/program/PMConfig.hs b/program/PMConfig.hs new file mode 100644 index 0000000..20a380f --- /dev/null +++ b/program/PMConfig.hs @@ -0,0 +1,21 @@ +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 +} diff --git a/program/PMDefaults.hs b/program/PMDefaults.hs index 4e848c8..15908c6 100644 --- a/program/PMDefaults.hs +++ b/program/PMDefaults.hs @@ -1,6 +1,6 @@ module PMDefaults where import PMInstance -import ProposalMatcher +import PMConfig import qualified NaiveMinCostFlow import qualified CS2MinCostFlow diff --git a/program/ProposalMatcher.hs b/program/ProposalMatcher.hs index 2f5f63f..96c2c32 100644 --- a/program/ProposalMatcher.hs +++ b/program/ProposalMatcher.hs @@ -5,24 +5,7 @@ import Data.Graph.Inductive.Tree 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 diff --git a/program/Test.hs b/program/Test.hs index 2e42be1..d0bd6e2 100644 --- a/program/Test.hs +++ b/program/Test.hs @@ -3,13 +3,16 @@ module Test ( 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, @@ -19,10 +22,11 @@ module Test ( module Evaluation ) where import TestUtils +import PMConfig +import PMDefaults import PMInstance import PMInstanceGenerator import ProposalMatcher -import PMDefaults import System.Random import RandomizedMonad import Evaluation diff --git a/program/TestUtils.hs b/program/TestUtils.hs index 623391d..acee1c7 100644 --- a/program/TestUtils.hs +++ b/program/TestUtils.hs @@ -11,6 +11,7 @@ import System.Posix.IO import System.Posix.Time import System.Process import PMInstance +import PMConfig import ProposalMatcher import PMDefaults import PMInstanceGenerator