diff --git a/doc/report/figures/fsm/agent_beginning.gv b/doc/report/figures/fsm/agent_beginning.gv index 6920556dcbdb1852057cd98480f466d053a7ea3d..b079a4fe17d39f919e5f97aec12653ac77f19a81 100644 --- a/doc/report/figures/fsm/agent_beginning.gv +++ b/doc/report/figures/fsm/agent_beginning.gv @@ -39,6 +39,10 @@ digraph finite_state_machine { stash "]; + WaitingRoleAssignment -> WaitingRoleAssignment [label = "neighbour : MakeOffer(o) => + stash + "]; + WaitingRoleAssignment -> OffererWaitingValues [ label = "self : DetermineSubset(true) => unstashall "]; diff --git a/doc/report/figures/fsm/agent_beginning.png b/doc/report/figures/fsm/agent_beginning.png index eaaeef6a689da90d50668f1796bbd3339e1f1f1d..7226bf28e6a51b1ac03c086f50dbd6993a3022e0 100644 Binary files a/doc/report/figures/fsm/agent_beginning.png and b/doc/report/figures/fsm/agent_beginning.png differ diff --git a/doc/report/figures/fsm/committed.gv b/doc/report/figures/fsm/committed.gv index 360797496d63bb909ed8768a7233d69e8a0b2e3a..e5b36aed7c5c10a808e8612caa47c5a4279047ee 100644 --- a/doc/report/figures/fsm/committed.gv +++ b/doc/report/figures/fsm/committed.gv @@ -84,7 +84,9 @@ digraph finite_state_machine { self ! Act(shouldAct, self.currBestOffer.move) "]; - +Committed -> Committed [label = "neighbour : Reject(someOffer) => + Nothing + "]; GivingPartnerGoNoGo -> GivingPartnerGoNoGo [label = "self.partner : GiveGo => diff --git a/doc/report/figures/fsm/committed.png b/doc/report/figures/fsm/committed.png index 9b33ff1f87c26188d5ec0692e7b86f27a97f1815..1a79180832e2a05c58ea83f5217b75ae6a7f8042 100644 Binary files a/doc/report/figures/fsm/committed.png and b/doc/report/figures/fsm/committed.png differ diff --git a/doc/report/figures/fsm/full_mgm2_agent.gv b/doc/report/figures/fsm/full_mgm2_agent.gv index bd0071272b240a9d502a571fb2a79652e07813bf..dd386847d1f0dba8ce71aef250b796aab82c234f 100644 --- a/doc/report/figures/fsm/full_mgm2_agent.gv +++ b/doc/report/figures/fsm/full_mgm2_agent.gv @@ -41,6 +41,10 @@ digraph finite_state_machine { WaitingRoleAssignment -> OffererWaitingValues [ label = "self : DetermineSubset(true) => unstashall + "]; + + WaitingRoleAssignment -> WaitingRoleAssignment [label = "neighbour : MakeOffer(o) => + stash "]; WaitingRoleAssignment -> ReceiverWaitingValues [ label = "self : DetermineSubset(false) => @@ -109,6 +113,10 @@ digraph finite_state_machine { ReceiverWaitingValues -> ReceiverWaitingValues [label = "neighbour : MakeOffer(someOffer/None) => stash + "]; + + ReceiverWaitingValues -> ReceiverWaitingValues [label = "neighbour : Reject(someOffer) => + Nothing "]; /*Receives a neighbour's delta*/ @@ -152,6 +160,10 @@ digraph finite_state_machine { stash "]; +ReceiverAllOffersReceived -> ReceiverAllOffersReceived [label = "neighbour : Reject(someOffer) => + Nothing + "]; + /*Receive a void offer from itself: there are no viable offers*/ ReceiverAllOffersReceived -> Uncommitted [label = "self : BestOffer(None, _) => unstashall @@ -175,6 +187,10 @@ digraph finite_state_machine { /*THE END?*/ + Committed -> Committed [label = "neighbour : Reject(someOffer) => + Nothing + "]; + /*committed*/ Committed -> Committed [label = "neighbour : InformDelta(delta) && (#self.neighbourDeltas < #self.neighbours-1) => self.neighbourDeltas.put(neighbour, delta) @@ -187,6 +203,10 @@ digraph finite_state_machine { self ! Act(shouldAct, self.currBestOffer.move) "]; +Uncommitted -> Uncommitted [label = "neighbour : Reject(someOffer) => + Nothing + "]; + /*uncommitted*/ Uncommitted -> Uncommitted [label = "neighbour : InformDelta(delta) && (#self.neighbourDeltas < #self.neighbours-1) => self.neighbourDeltas.put(neighbour, delta) diff --git a/doc/report/figures/fsm/full_mgm2_agent.png b/doc/report/figures/fsm/full_mgm2_agent.png index d07e327ad1eb321aaf81e0b3cd7a88eda172e2a9..30fd59c4c55f992e46077139a8f277b8b01480f0 100644 Binary files a/doc/report/figures/fsm/full_mgm2_agent.png and b/doc/report/figures/fsm/full_mgm2_agent.png differ diff --git a/doc/report/figures/fsm/receiver.gv b/doc/report/figures/fsm/receiver.gv index 1aacb9cba1a27a9e701aa846976e79b44aeb899f..3a58ddfeefc466548e2669cdeb424ed69bdd1782 100644 --- a/doc/report/figures/fsm/receiver.gv +++ b/doc/report/figures/fsm/receiver.gv @@ -71,6 +71,10 @@ digraph finite_state_machine { stash "]; + ReceiverWaitingValues -> ReceiverWaitingValues [label = "neighbour : Reject(someOffer) => + Nothing + "]; + /*RECEIVER ALL OFFERS RECEIVED*/ @@ -79,6 +83,10 @@ digraph finite_state_machine { stash "]; + ReceiverAllOffersReceived -> ReceiverAllOffersReceived [label = "neighbour : Reject(someOffer) => + Nothing + "]; + /*Receive a void offer from itself: there are no viable offers*/ ReceiverAllOffersReceived -> Uncommitted [label = "self : BestOffer(None, _) => unstashall diff --git a/doc/report/figures/fsm/receiver.png b/doc/report/figures/fsm/receiver.png index 74e21dd35b4d83e42591167cebecd04f74d69a93..84bb74732fe477f05a0bb481cf163bcdf0704cb8 100644 Binary files a/doc/report/figures/fsm/receiver.png and b/doc/report/figures/fsm/receiver.png differ diff --git a/doc/report/figures/fsm/uncommitted.gv b/doc/report/figures/fsm/uncommitted.gv index 32d7e44e1e16e040a18f8c5dec0e52e7526f194a..5dbc8345766af80caa4abc3ac32a8bd84033d96c 100644 --- a/doc/report/figures/fsm/uncommitted.gv +++ b/doc/report/figures/fsm/uncommitted.gv @@ -80,6 +80,10 @@ digraph finite_state_machine { Nothing "]; +Uncommitted -> Uncommitted [label = "neighbour : Reject(someOffer) => + Nothing + "]; + /*uncommitted*/ Uncommitted -> ActSolo [label = "neighbour : InformDelta(delta) && (#self.neighbourDeltas == #self.neighbours-1) => self.neighbourDeltas.put(neighbour, delta) diff --git a/doc/report/figures/fsm/uncommitted.png b/doc/report/figures/fsm/uncommitted.png index 3af970b27d686a5dd9318fd8e706134618f24263..90737060c9bd9573b2467c4fc760f39ba4621901 100644 Binary files a/doc/report/figures/fsm/uncommitted.png and b/doc/report/figures/fsm/uncommitted.png differ 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 d2ced5726428ab097454bb797efc4ffd23f133aa..b06ab39e14cd7eb197384e7c773b8a89a2685d1f 100644 --- a/src/main/scala/org/scadcop/solver/decentralized/mgm2/AgentBehaviour.scala +++ b/src/main/scala/org/scadcop/solver/decentralized/mgm2/AgentBehaviour.scala @@ -318,7 +318,7 @@ class AgentBehaviour(variable: Variable, rejectOffers(updatedMind.receivedOffers) //decline all offers broadcast(InformDelta(updatedMind.deltas(variable))) //inform all neighbours unstashAll - goto(Committed) using updatedMind + goto(Uncommitted) using updatedMind } /**