Skip to content
This repository has been archived by the owner on Oct 20, 2022. It is now read-only.

Is the separator defined in current DPOP algo the same as in MB-DPOP? #9

Open
luptior opened this issue Apr 18, 2019 · 3 comments
Open

Comments

@luptior
Copy link

luptior commented Apr 18, 2019

I'm trying to see if I can implement MB-DPOP https://infoscience.epfl.ch/record/98347
And I find that the _on_value_message() function in dpop.py's class DpopAlgo() does have some code related to separator.

Kind of confused, does the DPOP algorithm currently have MB-DPOP built-in or just use the separator for implementation need?

@luptior
Copy link
Author

luptior commented Apr 18, 2019

Also the comments says "Pseudo parent are not given explicitly but can be deduced from the relation set with add_relation."
How should I property do this?

@PierreRustOrange
Copy link
Member

PierreRustOrange commented Apr 23, 2019

Hi,

I'm glad you're working on MB-DPOP, this would be a very good addition to the set of algorithms available in pyDCOP. I advise you to implement it as a new file mbdpop.py in the algorithms directory.
Note that if you already have some code, you can create a pull request with it so that we can see the same code and anybody could comment / contribute on it. I'll merge it once it's ready and working.

About the separator:
The current DPOP implementation does not have MB-DPOP built-in, but simply the orginal DPOP.
In DPOP, altough it's not written as such in the original paper, the util messages indeed contain a value for each node in the separator. In Petcu's thesis however, this message is defined based on the separator (p53, def 14). The definitions from the article and the thesis are actually equivalent.

Definition 14 (UTIL message) UTIL^j_i , the UTIL message sent by agent Xi to agent Xj is a multi-
dimensional matrix, with one dimension for each variable present in Sepi. dim(U T ILji ) is the set of
individual variables in the message. Note that always Xj ∈ dim(U T ILji ).

BTW, the comment of the DpopAlgo class states this :

  • VALUE messages :
    contains the value of the parent of the node and the values of all
    variables that were present in our UTIl message to our parent (that is
    to say, our separator) .

About Pseudo-parent
You're right, there's something wrong here, I think the comment is outdated and describes a previous version of the implementation. I'll have a look at this and get back to you shortly.

@PierreRustOrange
Copy link
Member

I've updated and done some cleanup in the dpop implementation, let me know if you still have any questions

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants