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;
|
||||
}
|
||||
|
||||
/**
|
||||
* @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) {
|
||||
Term heap_arena, heap, *ar, *nar;
|
||||
UInt hsize;
|
||||
@ -1881,6 +1890,21 @@ static Int p_nb_heap(USES_REGS1) {
|
||||
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) {
|
||||
Term t = Deref(ARG1);
|
||||
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_empty", 1, p_nb_heap_empty, 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_close", 1, p_nb_beam_close, SafePredFlag);
|
||||
Yap_InitCPred("nb_beam_add", 3, p_nb_beam_add_to_beam, 0L);
|
||||
|
@ -45,6 +45,7 @@
|
||||
nb_heap_del/3,
|
||||
nb_heap_peek/3,
|
||||
nb_heap_empty/1,
|
||||
nb_heap_reset/1,
|
||||
nb_heap_size/2,
|
||||
nb_beam/2,
|
||||
nb_beam_close/1,
|
||||
|
@ -145,7 +145,7 @@ for ( [key,v] of singletonVars.entries()) {
|
||||
console.log("reset");
|
||||
}
|
||||
|
||||
CodeMirror.registerHelper("lint", "prolog", exportErrors);
|
||||
//CodeMirror.registerHelper("lint", "prolog", exportErrors);
|
||||
|
||||
/*******************************
|
||||
* CHARACTER ESCAPES *
|
||||
|
@ -30,6 +30,7 @@ set (PROBLOG_PROGRAMS
|
||||
problog/version_control.yap
|
||||
problog/nestedtries.yap
|
||||
problog/utils.yap
|
||||
problog/lbdd.yap
|
||||
problog/utils_lbdd.yap
|
||||
problog/ad_converter.yap
|
||||
problog/termhandling.yap
|
||||
|
@ -1330,7 +1330,7 @@ set_fact_probability(ID,Prob) :-
|
||||
retract(ProblogTerm),
|
||||
ProblogTerm =.. [ProblogName|ProblogTermArgs],
|
||||
nth1(ProblogArity,ProblogTermArgs,_,KeepArgs),
|
||||
NewLogProb is log(Prob),
|
||||
(isnan(Prob) -> NewLogProb = 0.0 ; NewLogProb is log(Prob)),
|
||||
nth1(ProblogArity,NewProblogTermArgs,NewLogProb,KeepArgs),
|
||||
NewProblogTerm =.. [ProblogName|NewProblogTermArgs],
|
||||
assertz(NewProblogTerm).
|
||||
|
@ -68,10 +68,18 @@ log2prob(X,Slope,FactID,V) :-
|
||||
sigmoid(V0, Slope, V).
|
||||
|
||||
bind_maplist([], _Slope, _X).
|
||||
bind_maplist([Node-(Node-Pr)|MapList], Slope, X) :-
|
||||
bind_maplist([Node-(Node-NPr)|MapList], Slope, X) :-
|
||||
SigPr <== X[Node],
|
||||
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) :-
|
||||
|
@ -2,7 +2,6 @@
|
||||
:- ensure_loaded(library(lists)).
|
||||
:- ensure_loaded(library(rbtrees)).
|
||||
:- ensure_loaded(library(tries)).
|
||||
:- ensure_loaded(('../problog/ptree')).
|
||||
:- ensure_loaded(library(trie_sp)).
|
||||
:- ensure_loaded(library(bdd)).
|
||||
:- 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))).
|
||||
|
||||
:- nb_heap(100000,Q), nb_setval(heap,Q).
|
||||
|
||||
|
||||
%:- leash(0), spy graph2bdd.
|
||||
|
||||
@ -58,7 +59,8 @@ graph(X,Y,Trie_Completed_Proofs,Vs) :-
|
||||
!,
|
||||
export_answer([Y|Final], 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),
|
||||
!,
|
||||
export_answer(Final, Trie_Completed_Proofs, Vs).
|
||||
|
@ -17,7 +17,7 @@
|
||||
:- use_module('../problog_lbfgs').
|
||||
|
||||
|
||||
:- if(false).
|
||||
:- if(true).
|
||||
|
||||
:- use_module('kbgraph').
|
||||
|
||||
|
@ -800,6 +800,20 @@ gradient_descent :-
|
||||
set_fact(FactID, Slope, P ) :-
|
||||
X <== P[FactID],
|
||||
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
|
||||
->
|
||||
NPr = 0.99
|
||||
@ -808,13 +822,7 @@ set_fact(FactID, Slope, P ) :-
|
||||
->
|
||||
NPr = 0.01 ;
|
||||
Pr = NPr ),
|
||||
set_fact_probability(FactID, NPr).
|
||||
|
||||
|
||||
set_tunable(I,Slope,P) :-
|
||||
X <== P[I],
|
||||
sigmoid(X,Slope,Pr),
|
||||
set_fact_probability(I,Pr).
|
||||
set_fact_probability(I,NPr).
|
||||
|
||||
:- include(problog/lbdd).
|
||||
|
||||
|
Reference in New Issue
Block a user