libDAI
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
include
dai
lc.h
Go to the documentation of this file.
1
/* This file is part of libDAI - http://www.libdai.org/
2
*
3
* Copyright (c) 2006-2011, The libDAI authors. All rights reserved.
4
*
5
* Use of this source code is governed by a BSD-style license that can be found in the LICENSE file.
6
*/
7
8
11
12
13
#ifndef __defined_libdai_lc_h
14
#define __defined_libdai_lc_h
15
16
17
#include <string>
18
#include <
dai/daialg.h
>
19
#include <
dai/enum.h
>
20
#include <
dai/factorgraph.h
>
21
#include <
dai/properties.h
>
22
#include <
dai/exceptions.h
>
23
24
25
namespace
dai {
26
27
29
class
LC
:
public
DAIAlgFG
{
30
private
:
32
std::vector<Factor>
_pancakes
;
34
std::vector<Factor>
_cavitydists
;
36
std::vector<std::vector<Factor> >
_phis
;
38
std::vector<Factor>
_beliefs
;
40
Real
_maxdiff
;
42
size_t
_iters
;
43
44
public
:
46
struct
Properties
{
48
54
DAI_ENUM
(CavityType,FULL,PAIR,PAIR2,UNIFORM);
55
57
61
DAI_ENUM
(UpdateType,SEQFIX,SEQRND);
62
64
size_t
verbose
;
65
67
size_t
maxiter
;
68
70
Real
tol
;
71
73
bool
reinit
;
74
76
Real
damping
;
77
79
CavityType
cavity
;
80
82
UpdateType
updates
;
83
85
std::string
cavainame
;
86
88
PropertySet
cavaiopts
;
89
} props;
90
91
public
:
93
LC
() :
DAIAlgFG
(),
_pancakes
(),
_cavitydists
(),
_phis
(),
_beliefs
(),
_maxdiff
(),
_iters
(), props() {}
94
96
99
LC
(
const
FactorGraph
&
fg
,
const
PropertySet
&opts );
100
101
103
104
virtual
LC
*
clone
()
const
{
return
new
LC
(*
this
); }
105
virtual
LC
*
construct
(
const
FactorGraph
&
fg
,
const
PropertySet
&opts )
const
{
return
new
LC
( fg, opts ); }
106
virtual
std::string
name
()
const
{
return
"LC"
; }
107
virtual
Factor
belief
(
const
Var
&v )
const
{
return
beliefV
( findVar( v ) ); }
108
virtual
Factor
belief
(
const
VarSet
&
/*vs*/
)
const
;
109
virtual
Factor
beliefV
(
size_t
i )
const
{
return
_beliefs
[i]; }
110
virtual
std::vector<Factor>
beliefs
()
const
{
return
_beliefs
; }
111
virtual
Real
logZ
()
const
{ DAI_THROW(NOT_IMPLEMENTED);
return
0.0; }
112
virtual
void
init
();
113
virtual
void
init
(
const
VarSet
&
/*ns*/
) {
init
(); }
114
virtual
Real
run
();
115
virtual
Real
maxDiff
()
const
{
return
_maxdiff
; }
116
virtual
size_t
Iterations
()
const
{
return
_iters
; }
117
virtual
void
setMaxIter
(
size_t
maxiter ) { props.
maxiter
= maxiter; }
118
virtual
void
setProperties
(
const
PropertySet
&opts );
119
virtual
PropertySet
getProperties
()
const
;
120
virtual
std::string
printProperties
()
const
;
122
124
125
126
Real
CalcCavityDist
(
size_t
i,
const
std::string &
name
,
const
PropertySet
&opts );
128
Real
InitCavityDists
(
const
std::string &
name
,
const
PropertySet
&opts );
130
long
SetCavityDists
( std::vector<Factor> &Q );
132
Factor
NewPancake
(
size_t
i,
size_t
_I,
bool
& hasNaNs);
134
void
CalcBelief
(
size_t
i);
136
const
Factor
&
pancake
(
size_t
i)
const
{
return
_pancakes
[i]; };
138
const
Factor
&
cavitydist
(
size_t
i)
const
{
return
_cavitydists
[i]; };
140
};
141
142
143
}
// end of namespace dai
144
145
146
#endif
Generated on Mon Sep 17 2012 12:30:34 for libDAI by
1.8.1.2