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 17919942caeb97b6b20d39402cfa3734316030f1..763281d7f0032cb5be0d2af4eb230912186622b2 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/mgm2/AgentBehaviour.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/mgm2/AgentBehaviour.scala @@ -277,7 +277,7 @@ class AgentBehaviour(variable: Variable, case Event(MakeOffer(eventualOffer), mind) if mind.nbReceivedOffers == neighbours.size-1 => if (debug) println(s"$variable in $stateName has received MakeOffer and the context is full.") var updatedMind: MGM2Mind = mind.addOffer(eventualOffer) - val (bestOffer, bestDelta) = updatedMind.chooseBestSingleOffer(variable, neighbours, constraints) + val (bestOffer, bestDelta) = updatedMind.chooseBestSingleOffer(variable, constraints) updatedMind = updatedMind.updateDeltas(variable, bestDelta) val partner : Option[Variable]= bestOffer match { case Some(o) => Some(o.offererVariable) diff --git a/src/main/scala/org/scadcop/solver/decentralized/mgm2/MGM2Mind.scala b/src/main/scala/org/scadcop/solver/decentralized/mgm2/MGM2Mind.scala index 68210d3e1f0a5b185a65b676df2c6a212319c6da..b7dafea5f90546fa5747ac7472931d21313af3cd 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/mgm2/MGM2Mind.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/mgm2/MGM2Mind.scala @@ -122,7 +122,6 @@ class MGM2Mind(val context : Context = new Context(), * @param constraints which should be valuated */ def chooseBestSingleOffer(receiverVariable: Variable, - neighbours: Set[Variable], constraints: Set[Constraint]): (Option[Offer], Double) = { val currentCost = currentContext.cost(constraints) var bestOffer: Option[Offer] = None // The best offer which will be selected, eventually none @@ -133,13 +132,13 @@ class MGM2Mind(val context : Context = new Context(), val receiverValue: Value = move.context.getValue(receiverVariable).get val offererValue: Value = move.context.getValue(offererVariable).get val constraint: Constraint = relevantConstraint(constraints, receiverVariable, offererVariable) - val costConstraint = constraint.cost(context) + val commonUtilityBeforeChange = constraint.cost(context) val potentialContext = context.fix(offererVariable, offererValue).fix(receiverVariable, receiverValue) + val commonUtilityAfterChange = constraint.cost(potentialContext) val potentialCost = potentialContext.cost(constraints) - val potentialCostConstraint = constraint.cost(potentialContext) - val gainConstraint = costConstraint - potentialCostConstraint + val sharedUtilityGain = commonUtilityAfterChange - commonUtilityBeforeChange //Subtract the difference in the link between the two agent so it is not counted twice - val delta: Double = currentCost - potentialCost + move.payoff - gainConstraint + val delta: Double = potentialCost - currentCost + move.payoff - sharedUtilityGain if (delta ~> bestDelta) { bestDelta = delta bestOffer = Some(new Offer(offererVariable, List(move))) 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 e0e4e5ce0f8a4d1afa4a29af6f6ab544830ba90e..51e59e79031d96885d800f962761211a682100de 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/supervisor/Supervisor.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/supervisor/Supervisor.scala @@ -249,7 +249,7 @@ class Supervisor(val pb : DCOP, val algorithm: Algorithm) extends Actor with Sta object Supervisor { var counter = 0 - val NB_ROUNDS = 2 + val NB_ROUNDS = 5 def incrementCounter() : Int = { counter = counter + 1