libDAI
Main Page
Related Pages
Namespaces
Classes
Files
Examples
File List
File Members
include
dai
gibbs.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_gibbs_h
14
#define __defined_libdai_gibbs_h
15
16
17
#include <
dai/daialg.h
>
18
#include <
dai/factorgraph.h
>
19
#include <
dai/properties.h
>
20
21
22
namespace
dai {
23
24
26
28
class
Gibbs
:
public
DAIAlgFG
{
29
private
:
31
typedef
std::vector<size_t>
_count_t
;
33
typedef
std::vector<size_t>
_state_t
;
35
size_t
_sample_count
;
37
std::vector<_count_t>
_var_counts
;
39
std::vector<_count_t>
_factor_counts
;
41
size_t
_iters
;
43
_state_t
_state
;
45
_state_t
_max_state
;
47
Real
_max_score
;
48
49
public
:
51
struct
Properties
{
53
size_t
maxiter
;
54
56
double
maxtime
;
57
59
size_t
restart
;
60
62
size_t
burnin
;
63
65
size_t
verbose
;
66
} props;
67
68
public
:
70
Gibbs
() :
DAIAlgFG
(),
_sample_count
(0),
_var_counts
(),
_factor_counts
(),
_iters
(0),
_state
(),
_max_state
(),
_max_score
(-INFINITY) {}
71
73
76
Gibbs
(
const
FactorGraph
&
fg
,
const
PropertySet
&opts ) :
DAIAlgFG
(fg),
_sample_count
(0),
_var_counts
(),
_factor_counts
(),
_iters
(0),
_state
(),
_max_state
(),
_max_score
(-INFINITY) {
77
setProperties
( opts );
78
construct
();
79
}
80
81
83
84
virtual
Gibbs
*
clone
()
const
{
return
new
Gibbs
(*
this
); }
85
virtual
Gibbs
*
construct
(
const
FactorGraph
&
fg
,
const
PropertySet
&opts )
const
{
return
new
Gibbs
( fg, opts ); }
86
virtual
std::string
name
()
const
{
return
"GIBBS"
; }
87
virtual
Factor
belief
(
const
Var
&v )
const
{
return
beliefV
( findVar( v ) ); }
88
virtual
Factor
belief
(
const
VarSet
&vs )
const
;
89
virtual
Factor
beliefV
(
size_t
i )
const
;
90
virtual
Factor
beliefF
(
size_t
I )
const
;
91
virtual
std::vector<Factor>
beliefs
()
const
;
92
virtual
Real
logZ
()
const
{ DAI_THROW(NOT_IMPLEMENTED);
return
0.0; }
93
std::vector<std::size_t>
findMaximum
()
const
{
return
_max_state
; }
94
virtual
void
init
();
95
virtual
void
init
(
const
VarSet
&
/*ns*/
) {
init
(); }
96
virtual
Real
run
();
97
virtual
Real
maxDiff
()
const
{ DAI_THROW(NOT_IMPLEMENTED);
return
0.0; }
98
virtual
size_t
Iterations
()
const
{
return
_iters
; }
99
virtual
void
setMaxIter
(
size_t
maxiter ) { props.
maxiter
= maxiter; }
100
virtual
void
setProperties
(
const
PropertySet
&opts );
101
virtual
PropertySet
getProperties
()
const
;
102
virtual
std::string
printProperties
()
const
;
104
105
107
108
109
void
randomizeState
();
111
std::vector<size_t>&
state
() {
return
_state
; }
113
const
std::vector<size_t>&
state
()
const
{
return
_state
; }
115
116
private
:
118
void
construct
();
120
void
updateCounts
();
122
Prob
getVarDist
(
size_t
i );
124
void
resampleVar
(
size_t
i );
126
size_t
getFactorEntry
(
size_t
I );
128
size_t
getFactorEntryDiff
(
size_t
I,
size_t
i );
129
};
130
131
133
135
std::vector<size_t> getGibbsState(
const
FactorGraph &fg,
size_t
maxiter );
136
137
138
}
// end of namespace dai
139
140
146
#endif
Generated on Mon Sep 17 2012 12:30:34 for libDAI by
1.8.1.2