fixes
This commit is contained in:
parent
63a514cad5
commit
10307c27fe
25
C/globals.c
25
C/globals.c
@ -1840,6 +1840,15 @@ static Term MkZeroApplTerm(Functor f, UInt sz USES_REGS) {
|
|||||||
return tf;
|
return tf;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @pred nb_heap(+_Size_,-_Heap_) is deterministic.
|
||||||
|
*
|
||||||
|
* Initialize a new binomial heap of size _Size_.
|
||||||
|
* The Heap resides in the Prolog stack, but the state of the
|
||||||
|
* Heap is not backtrable.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
static Int p_nb_heap(USES_REGS1) {
|
static Int p_nb_heap(USES_REGS1) {
|
||||||
Term heap_arena, heap, *ar, *nar;
|
Term heap_arena, heap, *ar, *nar;
|
||||||
UInt hsize;
|
UInt hsize;
|
||||||
@ -1881,6 +1890,21 @@ static Int p_nb_heap(USES_REGS1) {
|
|||||||
return TRUE;
|
return TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @pred nb_heap_reset(+_Heap_) is deterministic.
|
||||||
|
*
|
||||||
|
* Set the number if entries in the heap to 0. Allows reusing
|
||||||
|
* the same space for several heaps.
|
||||||
|
*/
|
||||||
|
static Int p_nb_heap_reset(USES_REGS1) {
|
||||||
|
CELL *qd = GetHeap(ARG1, "reset_heap");
|
||||||
|
|
||||||
|
if (!qd)
|
||||||
|
return FALSE;
|
||||||
|
qd[HEAP_SIZE] = MkIntTerm(0);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
static Int p_nb_heap_close(USES_REGS1) {
|
static Int p_nb_heap_close(USES_REGS1) {
|
||||||
Term t = Deref(ARG1);
|
Term t = Deref(ARG1);
|
||||||
if (!IsVarTerm(t)) {
|
if (!IsVarTerm(t)) {
|
||||||
@ -2796,6 +2820,7 @@ void Yap_InitGlobals(void) {
|
|||||||
Yap_InitCPred("nb_heap_peek", 3, p_nb_heap_peek, SafePredFlag);
|
Yap_InitCPred("nb_heap_peek", 3, p_nb_heap_peek, SafePredFlag);
|
||||||
Yap_InitCPred("nb_heap_empty", 1, p_nb_heap_empty, SafePredFlag);
|
Yap_InitCPred("nb_heap_empty", 1, p_nb_heap_empty, SafePredFlag);
|
||||||
Yap_InitCPred("nb_heap_size", 2, p_nb_heap_size, SafePredFlag);
|
Yap_InitCPred("nb_heap_size", 2, p_nb_heap_size, SafePredFlag);
|
||||||
|
Yap_InitCPred("nb_heap_reset", 1, p_nb_heap_reset, SafePredFlag);
|
||||||
Yap_InitCPred("nb_beam", 2, p_nb_beam, 0L);
|
Yap_InitCPred("nb_beam", 2, p_nb_beam, 0L);
|
||||||
Yap_InitCPred("nb_beam_close", 1, p_nb_beam_close, SafePredFlag);
|
Yap_InitCPred("nb_beam_close", 1, p_nb_beam_close, SafePredFlag);
|
||||||
Yap_InitCPred("nb_beam_add", 3, p_nb_beam_add_to_beam, 0L);
|
Yap_InitCPred("nb_beam_add", 3, p_nb_beam_add_to_beam, 0L);
|
||||||
|
@ -45,6 +45,7 @@
|
|||||||
nb_heap_del/3,
|
nb_heap_del/3,
|
||||||
nb_heap_peek/3,
|
nb_heap_peek/3,
|
||||||
nb_heap_empty/1,
|
nb_heap_empty/1,
|
||||||
|
nb_heap_reset/1,
|
||||||
nb_heap_size/2,
|
nb_heap_size/2,
|
||||||
nb_beam/2,
|
nb_beam/2,
|
||||||
nb_beam_close/1,
|
nb_beam_close/1,
|
||||||
|
@ -145,7 +145,7 @@ for ( [key,v] of singletonVars.entries()) {
|
|||||||
console.log("reset");
|
console.log("reset");
|
||||||
}
|
}
|
||||||
|
|
||||||
CodeMirror.registerHelper("lint", "prolog", exportErrors);
|
//CodeMirror.registerHelper("lint", "prolog", exportErrors);
|
||||||
|
|
||||||
/*******************************
|
/*******************************
|
||||||
* CHARACTER ESCAPES *
|
* CHARACTER ESCAPES *
|
||||||
|
@ -30,6 +30,7 @@ set (PROBLOG_PROGRAMS
|
|||||||
problog/version_control.yap
|
problog/version_control.yap
|
||||||
problog/nestedtries.yap
|
problog/nestedtries.yap
|
||||||
problog/utils.yap
|
problog/utils.yap
|
||||||
|
problog/lbdd.yap
|
||||||
problog/utils_lbdd.yap
|
problog/utils_lbdd.yap
|
||||||
problog/ad_converter.yap
|
problog/ad_converter.yap
|
||||||
problog/termhandling.yap
|
problog/termhandling.yap
|
||||||
|
@ -1330,7 +1330,7 @@ set_fact_probability(ID,Prob) :-
|
|||||||
retract(ProblogTerm),
|
retract(ProblogTerm),
|
||||||
ProblogTerm =.. [ProblogName|ProblogTermArgs],
|
ProblogTerm =.. [ProblogName|ProblogTermArgs],
|
||||||
nth1(ProblogArity,ProblogTermArgs,_,KeepArgs),
|
nth1(ProblogArity,ProblogTermArgs,_,KeepArgs),
|
||||||
NewLogProb is log(Prob),
|
(isnan(Prob) -> NewLogProb = 0.0 ; NewLogProb is log(Prob)),
|
||||||
nth1(ProblogArity,NewProblogTermArgs,NewLogProb,KeepArgs),
|
nth1(ProblogArity,NewProblogTermArgs,NewLogProb,KeepArgs),
|
||||||
NewProblogTerm =.. [ProblogName|NewProblogTermArgs],
|
NewProblogTerm =.. [ProblogName|NewProblogTermArgs],
|
||||||
assertz(NewProblogTerm).
|
assertz(NewProblogTerm).
|
||||||
|
@ -68,10 +68,18 @@ log2prob(X,Slope,FactID,V) :-
|
|||||||
sigmoid(V0, Slope, V).
|
sigmoid(V0, Slope, V).
|
||||||
|
|
||||||
bind_maplist([], _Slope, _X).
|
bind_maplist([], _Slope, _X).
|
||||||
bind_maplist([Node-(Node-Pr)|MapList], Slope, X) :-
|
bind_maplist([Node-(Node-NPr)|MapList], Slope, X) :-
|
||||||
SigPr <== X[Node],
|
SigPr <== X[Node],
|
||||||
sigmoid(SigPr, Slope, Pr),
|
sigmoid(SigPr, Slope, Pr),
|
||||||
bind_maplist(MapList, Slope, X).
|
(Pr > 0.999
|
||||||
|
->
|
||||||
|
NPr = 0.999
|
||||||
|
;
|
||||||
|
Pr < 0.001
|
||||||
|
->
|
||||||
|
NPr = 0.001 ;
|
||||||
|
Pr = NPr ),
|
||||||
|
bind_maplist(MapList, Slope, X).
|
||||||
|
|
||||||
|
|
||||||
%get_prob(Node, Prob) :-
|
%get_prob(Node, Prob) :-
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
:- ensure_loaded(library(lists)).
|
:- ensure_loaded(library(lists)).
|
||||||
:- ensure_loaded(library(rbtrees)).
|
:- ensure_loaded(library(rbtrees)).
|
||||||
:- ensure_loaded(library(tries)).
|
:- ensure_loaded(library(tries)).
|
||||||
:- ensure_loaded(('../problog/ptree')).
|
|
||||||
:- ensure_loaded(library(trie_sp)).
|
:- ensure_loaded(library(trie_sp)).
|
||||||
:- ensure_loaded(library(bdd)).
|
:- ensure_loaded(library(bdd)).
|
||||||
:- ensure_loaded(library(bhash)).
|
:- ensure_loaded(library(bhash)).
|
||||||
@ -29,6 +28,8 @@ graph2bdd(Query,1,bdd(D,T,Vs)) :-
|
|||||||
|
|
||||||
:- set_problog_flag(init_method,(Q,N,Bdd,user:graph2bdd(Q,N,Bdd))).
|
:- set_problog_flag(init_method,(Q,N,Bdd,user:graph2bdd(Q,N,Bdd))).
|
||||||
|
|
||||||
|
:- nb_heap(100000,Q), nb_setval(heap,Q).
|
||||||
|
|
||||||
|
|
||||||
%:- leash(0), spy graph2bdd.
|
%:- leash(0), spy graph2bdd.
|
||||||
|
|
||||||
@ -58,7 +59,8 @@ graph(X,Y,Trie_Completed_Proofs,Vs) :-
|
|||||||
!,
|
!,
|
||||||
export_answer([Y|Final], Trie_Completed_Proofs,Vs).
|
export_answer([Y|Final], Trie_Completed_Proofs,Vs).
|
||||||
graph(X,Y,Trie_Completed_Proofs, Vs) :-
|
graph(X,Y,Trie_Completed_Proofs, Vs) :-
|
||||||
nb_heap(100000,Q),
|
nb_getval(heap, Q),
|
||||||
|
nb_heap_reset(Q),
|
||||||
path(X,Y,X,[X],Final, 0, _Pr, Q),
|
path(X,Y,X,[X],Final, 0, _Pr, Q),
|
||||||
!,
|
!,
|
||||||
export_answer(Final, Trie_Completed_Proofs, Vs).
|
export_answer(Final, Trie_Completed_Proofs, Vs).
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
:- use_module('../problog_lbfgs').
|
:- use_module('../problog_lbfgs').
|
||||||
|
|
||||||
|
|
||||||
:- if(false).
|
:- if(true).
|
||||||
|
|
||||||
:- use_module('kbgraph').
|
:- use_module('kbgraph').
|
||||||
|
|
||||||
|
@ -800,6 +800,20 @@ gradient_descent :-
|
|||||||
set_fact(FactID, Slope, P ) :-
|
set_fact(FactID, Slope, P ) :-
|
||||||
X <== P[FactID],
|
X <== P[FactID],
|
||||||
sigmoid(X, Slope, Pr),
|
sigmoid(X, Slope, Pr),
|
||||||
|
(Pr > 0.999
|
||||||
|
->
|
||||||
|
NPr = 0.999
|
||||||
|
;
|
||||||
|
Pr < 0.001
|
||||||
|
->
|
||||||
|
NPr = 0.001 ;
|
||||||
|
Pr = NPr ),
|
||||||
|
set_fact_probability(FactID, NPr).
|
||||||
|
|
||||||
|
|
||||||
|
set_tunable(I,Slope,P) :-
|
||||||
|
X <== P[I],
|
||||||
|
sigmoid(X,Slope,Pr),
|
||||||
(Pr > 0.99
|
(Pr > 0.99
|
||||||
->
|
->
|
||||||
NPr = 0.99
|
NPr = 0.99
|
||||||
@ -808,13 +822,7 @@ set_fact(FactID, Slope, P ) :-
|
|||||||
->
|
->
|
||||||
NPr = 0.01 ;
|
NPr = 0.01 ;
|
||||||
Pr = NPr ),
|
Pr = NPr ),
|
||||||
set_fact_probability(FactID, NPr).
|
set_fact_probability(I,NPr).
|
||||||
|
|
||||||
|
|
||||||
set_tunable(I,Slope,P) :-
|
|
||||||
X <== P[I],
|
|
||||||
sigmoid(X,Slope,Pr),
|
|
||||||
set_fact_probability(I,Pr).
|
|
||||||
|
|
||||||
:- include(problog/lbdd).
|
:- include(problog/lbdd).
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user