|
FRODO Version 2.19.1
An open-source framework for Distributed Constraint Optimization (DCOP)
|
The MPC-DisWCSP4 algorithm for DisWCSP with privacy guarantees. More...

Public Member Functions | |
| MPC_DisWCSP4 (DCOPProblemInterface< V, AddableInteger > problem, Element params) | |
| Constructor. | |
| Collection< MessageType > | getMsgTypes () |
| void | notifyIn (Message msg) |
| Public Member Functions inherited from frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V > | |
| MPC_DisCSP4 (DCOPProblemInterface< V, AddableInteger > problem, Element params) | |
| Constructor. | |
| void | setQueue (Queue queue) |
| Collection< MessageType > | getMsgTypes () |
| void | notifyIn (Message msg) |
Static Public Attributes | |
| static MessageType | START_MSG_TYPE = AgentInterface.START_AGENT |
| The type of the start message. | |
Protected Member Functions | |
| void | terminate () |
| Moves to the next target cost, or terminates if the maximum cost has been reached. | |
| void | nextMultiplication () |
| void | findFirstSolution () |
| void | init () |
| void | recordCandidateSol (AddableInteger publicCost, AddableInteger privateCost, List< BigInteger > sPrimePrime) |
| Protected Member Functions inherited from frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V > | |
| void | terminate () |
| Terminates. | |
| void | nextMultiplication () |
| Moves to the next vector multiplication, if any remains. | |
| void | revealSol () |
| Reveals to each agent all shares of its variables' optimal values. | |
| void | processPending () |
| Processes pending messages. | |
| void | findFirstSolution () |
| Initiates the arithmetic circuit on S that singles out its first 1 entry. | |
| void | init () |
| Parses the problem. | |
| void | recordCandidateSol (AddableInteger publicCost, AddableInteger privateCost, List< BigInteger > sPrimePrime) |
| Records a candidate solution. | |
| void | share0 () |
| Creates and sends share of 0. | |
| void | shareVectorOfZeros () |
| Shares a vector full of zeros. | |
Private Member Functions | |
| void | findAllSolutions (final int cost) |
| Starts the computation of the p vector, which will have a share of 1 for each solution of the input cost. | |
Private Attributes | |
| final AddableInteger | infiniteCost |
| In private constraints, infinite costs are replaced with this value. | |
| final int | maxCost |
| The maximum total cost of any solution. | |
| int | targetCost = 0 |
| The cost for which we are looking for all solutions. | |
Additional Inherited Members | |
| Protected Attributes inherited from frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V > | |
| Queue | queue |
| The queue used to exchange messages. | |
| DCOPProblemInterface< V, AddableInteger > | problem |
| The problem. | |
| boolean | started |
| Whether the algorithm has been started. | |
| ArrayList< String > | agents |
| The agents in lexicographic order. | |
| int | nbrAgents |
| The number of agents. | |
| int | myAgentID |
| This agent's index in the ordered list of agents. | |
| int | nbrSols |
| The number of publicly feasible solutions. | |
| final BigInteger | modulo |
| Shamir secret shares are modulo this number. | |
| BigInteger[] | Sprime |
| The vector S' of Shamir shares of the feasibility of each publicly feasible solution. | |
| final PaillierCryptoScheme | cryptoScheme |
| The Paillier crypto scheme. | |
| BigInteger[] | S |
| The vector S of Shamir shares of whether each solution is the optimal one. | |
| BigInteger | hi |
| When computing the vector S, the previous value of h. | |
| BigInteger | Si |
| When computing the vector S, the previous value of Si. | |
| Phase | phase |
| The current phase. | |
| int | step |
| A step of computation. | |
| MultiPhase | multiPhase |
| The current phase of the current multiplication operation. | |
| boolean | currStep |
| Boolean used to identify received messages that belong to the next phase and should be postponed. | |
| int | sharesCount |
| Counter used to keep track of the number of shares exchanged. | |
| ArrayList< Message > | pendingMsgs |
| Messages received too early to be processed. | |
The MPC-DisWCSP4 algorithm for DisWCSP with privacy guarantees.
MPC-DisWCSP4 is MPC-DisCSP4, with the weak extension to DisWCSPs initially proposed for MPC-DisCSP2 in the following paper:
Marius-Calin Silaghi and Debasis Mitra. Distributed constraint satisfaction and optimization with privacy enforcement. In Proceedings of the 2004 IEEE/WIC/ACM International Conference on Intelligent Agent Technology (IAT'04), pages 531-535, Beijing, China, September 20-24 2004. IEEE Computer Society Press.
MPC-DisCSP4 is described in the following paper:
Marius-Calin Silaghi. Hiding absence of solution for a distributed constraint satisfaction problem (poster). In Proceedings of the Eighteenth International Florida Artificial Intelligence Research Society Conference (FLAIRS'05), pages 854-855, Clearwater Beach, FL, USA, May 15-17 2005. AAAI Press.
| <V> | the type used for variable values |
| frodo2.algorithms.mpc_discsp.MPC_DisWCSP4< V extends Addable< V > >.MPC_DisWCSP4 | ( | DCOPProblemInterface< V, AddableInteger > | problem, |
| Element | params ) |
Constructor.
| problem | the overall problem |
| params | the parameters |
References frodo2.solutionSpaces.AddableInteger.PlusInfinity.PLUS_INF, and frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.problem.
Referenced by getMsgTypes().
|
private |
Starts the computation of the p vector, which will have a share of 1 for each solution of the input cost.
| cost | the cost of interest |
References frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.modulo, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.nbrSols, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.S, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.shareVectorOfZeros(), frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.Sprime, and frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.step.
Referenced by findFirstSolution(), and terminate().

|
protected |
References findAllSolutions().

| Collection< MessageType > frodo2.algorithms.mpc_discsp.MPC_DisWCSP4< V extends Addable< V > >.getMsgTypes | ( | ) |
References frodo2.algorithms.mpc_discsp.EncrSharesMsg.ENCR_SHARES_MSG_TYPE, MPC_DisWCSP4(), frodo2.algorithms.mpc_discsp.OneShareMsg.ONE_SHARE_MSG, frodo2.algorithms.mpc_discsp.SharesMsg.SHARES_MSG_TYPE, and frodo2.algorithms.mpc_discsp.SolShareMsg.SOL_SHARE_MSG_TYPE.

|
protected |
References frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.nbrSols.
Referenced by notifyIn().
|
protected |
References frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.hi, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.modulo, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.nbrSols, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.revealSol(), frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.S, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.share0(), frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.shareVectorOfZeros(), frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.Si, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.Sprime, and frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.step.

| void frodo2.algorithms.mpc_discsp.MPC_DisWCSP4< V extends Addable< V > >.notifyIn | ( | Message | msg | ) |
References frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.agents, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.cryptoScheme, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.currStep, frodo2.communication.MessageType.equals(), frodo2.algorithms.mpc_discsp.SharesMsg.getAgent(), frodo2.algorithms.mpc_discsp.SharesMsg.getShares(), frodo2.communication.Message.getType(), init(), frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.modulo, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.myAgentID, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.nbrAgents, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.nbrSols, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.pendingMsgs, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.phase, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.processPending(), frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.queue, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.shares, frodo2.algorithms.mpc_discsp.SharesMsg.SHARES_MSG_TYPE, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.sharesCount, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.Sprime, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.started, and frodo2.algorithms.mpc_discsp.SharesMsg.step.

|
protected |
References frodo2.solutionSpaces.AddableInteger.add(), frodo2.solutionSpaces.AddableInteger.intValue(), frodo2.solutionSpaces.AddableInteger.min(), and frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.myAgentID.

|
protected |
Moves to the next target cost, or terminates if the maximum cost has been reached.
References frodo2.algorithms.AgentInterface< V extends Addable< V > >.AGENT_FINISHED, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.agents, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.currStep, findAllSolutions(), frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.myAgentID, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.problem, frodo2.algorithms.mpc_discsp.MPC_DisCSP4< V >.queue, and frodo2.algorithms.AgentInterface< V extends Addable< V > >.STATS_MONITOR.

|
private |
In private constraints, infinite costs are replaced with this value.
|
private |
The maximum total cost of any solution.
|
static |
The type of the start message.
|
private |
The cost for which we are looking for all solutions.