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 17f7cc07ad1e21fd1bcbcbfb39cd251743f92393..833b3a203017989d3215f881dd6c610fa5944cb5 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/supervisor/Supervisor.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/supervisor/Supervisor.scala @@ -16,7 +16,7 @@ class Supervisor(val pb : DCOP, val algorithm: Algorithm) extends Actor with Sta with FSM[SupervisorState, SupervisorStatus] { var debug = true - var debugState = false + var debugState = true var trace = false var solver: ActorRef = context.parent // Reference to the distributed solver @@ -102,7 +102,7 @@ class Supervisor(val pb : DCOP, val algorithm: Algorithm) extends Actor with Sta * Handles the message in the running state */ when(RunningSupervisorState) { - + // When an agent wants to start case Event(KickStartMe, status) => sender ! ContinueAlgo @@ -162,13 +162,13 @@ 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) => { - //TODO reset the context it has + val newStatus: SupervisorStatus = status.SupervisorStatus(status)//TODO reset the context it has unstashall goto(RunningSupervisorState) using status } case Event(StopAlgo, status) => { - //TODO ??? + goto(FinalSupervisorState) using status } } 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 6db5e19b76a84750b440f2b0d8e649f1fe2a000c..b495ba829d027630b1c5372da92f459bc1f74b65 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/supervisor/SupervisorStatus.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/supervisor/SupervisorStatus.scala @@ -41,4 +41,14 @@ class SupervisorStatus(val readyVariables: Set[Variable] = Set(), * @todo modify it */ def isTerminated : Boolean = ! isFirstRound + + def resetContext(currStatus: SupervisorStatus): SupervisorStatus { + new SupervisorStatus(readyVariables, + inactiveVariables, + killedVariables, + assignment new Context(), + metric, + isFirstRound + ) + } }