diff --git a/src/main/scala/org/scadcop/solver/decentralized/agent/VariableAgent.scala b/src/main/scala/org/scadcop/solver/decentralized/agent/VariableAgent.scala index 5c76167e083504eaef0edce53351e161189f7a64..89f8bbf100b1416403ebf7ebd01b44f13ee40b1c 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/agent/VariableAgent.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/agent/VariableAgent.scala @@ -23,7 +23,7 @@ abstract class VariableAgent(val variable: Variable, val constraints: Set[Constraint]) extends Actor { var trace: Boolean = false var debug: Boolean = false - var debugState: Boolean = true + var debugState: Boolean = false var supervisor: ActorRef = context.parent var directory: Directory = new Directory() diff --git a/src/main/scala/org/scadcop/solver/decentralized/mgm2/AgentBehaviour.scala b/src/main/scala/org/scadcop/solver/decentralized/mgm2/AgentBehaviour.scala index ead4194ae85c2504dd91c6f0f766df48e36d0871..8e81a91e64decc31572477482d65945549535eb4 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/mgm2/AgentBehaviour.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/mgm2/AgentBehaviour.scala @@ -414,7 +414,7 @@ class AgentBehaviour(variable: Variable, case Event(Act(true, None), mind) => if (debug) println(s"$variable in $stateName has received Act(true) but has no move") if (trace) println(s"$variable -> Supervisor : I kept my previous value = InformValue(${mind.context.getValue(variable).get})") - supervisor ! InformValue(updatedMind.context.getValue(variable).get) + supervisor ! InformValue(mind.context.getValue(variable).get) goto(Continue) using mind // When it should not act because it does not have the highest delta in the neighbourhood diff --git a/src/main/scala/org/scadcop/solver/decentralized/supervisor/Supervisor.scala b/src/main/scala/org/scadcop/solver/decentralized/supervisor/Supervisor.scala index 16289b6137f6e81271d085e6a4bfa9d3c08e3a38..b85c71d5179dabbe964c4d1c26422b4f45507c7f 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/supervisor/Supervisor.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/supervisor/Supervisor.scala @@ -15,8 +15,8 @@ import akka.actor.{Actor, ActorRef, FSM, Props, Stash, PoisonPill} class Supervisor(val pb : DCOP, val algorithm: Algorithm) extends Actor with Stash with FSM[SupervisorState, SupervisorStatus] { - var debug = true - var debugState = true + var debug = false + var debugState = false var trace = false var solver: ActorRef = context.parent // Reference to the distributed solver @@ -162,7 +162,7 @@ class Supervisor(val pb : DCOP, val algorithm: Algorithm) extends Actor with Sta //when it receives its own decison that it should continue case Event(ContinueAlgo, status) => { val newStatus: SupervisorStatus = status.resetContext() - unstashall + unstashAll goto(RunningSupervisorState) using newStatus } @@ -246,3 +246,12 @@ class Supervisor(val pb : DCOP, val algorithm: Algorithm) extends Actor with Sta initialize() } +object Supervisor { + var counter = 0 + val NB_ROUNDS = 2 + + def incrementCounter() : Int = { + counter = counter + 1 + counter + } +} diff --git a/src/main/scala/org/scadcop/solver/decentralized/supervisor/SupervisorStatus.scala b/src/main/scala/org/scadcop/solver/decentralized/supervisor/SupervisorStatus.scala index 5ad8423a8fca760509357099bb9e6838edb05092..2e44305b0b2d807febd5d7bfb9e8e931d2362301 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/supervisor/SupervisorStatus.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/supervisor/SupervisorStatus.scala @@ -40,16 +40,18 @@ class SupervisorStatus(val readyVariables: Set[Variable] = Set(), * Returns true if the algorithm ends * @todo modify it */ - def isTerminated : Boolean = ! isFirstRound + def isTerminated : Boolean = Supervisor.incrementCounter() == Supervisor.NB_ROUNDS /*Returns the updated supervisor's status when resetting the context*/ - def resetContext(): SupervisorStatus { + def resetContext(): SupervisorStatus = { new SupervisorStatus(readyVariables, - inactiveVariables = Set(), - killedVariables, - assignment new Context(), - metric, - isFirstRound - ) + inactiveVariables = Set(), + killedVariables, + assignment = new Context(), + metric, + isFirstRound + ) } } + +