50 lines
1.1 KiB
Bash
Executable File
50 lines
1.1 KiB
Bash
Executable File
#!/home/tgomes/bin/yap -L --
|
|
|
|
:- use_module(library(lists)).
|
|
:- use_module(library(random)).
|
|
|
|
|
|
:- initialization(main).
|
|
|
|
main :-
|
|
unix(argv(Args)),
|
|
nth(1, Args, EV), % percentage of evidence
|
|
nth(2, Args, NP), % number of individuals
|
|
atomic_concat(['ev', EV, 'p', NP, '.yap'], FileName),
|
|
open(FileName, 'write', S),
|
|
atom_number(EV, EV2),
|
|
atom_number(NP, NP2),
|
|
EV3 is EV2 / 100.0,
|
|
generate_people(S, NP2, 4),
|
|
write(S, '\n'),
|
|
write(S, 'query(X) :- '),
|
|
generate_evidence(S, NP2, EV3, 4),
|
|
write(S, 'friends(p1,p2,X).\n'),
|
|
close(S).
|
|
|
|
|
|
generate_people(S, N, Counting) :-
|
|
Counting > N, !.
|
|
generate_people(S, N, Counting) :-
|
|
format(S, 'people(p~w).~n', [Counting]),
|
|
Counting1 is Counting + 1,
|
|
generate_people(S, N, Counting1).
|
|
|
|
|
|
generate_evidence(S, N, Ev, Counting) :-
|
|
Counting > N, !.
|
|
generate_evidence(S, N, Ev, Counting) :-
|
|
random(X),
|
|
(
|
|
X < Ev
|
|
->
|
|
random(Y),
|
|
(Y > 0.5 -> Val = t ; Val = f),
|
|
format(S, 'smokes(p~w,~w),', [Counting,Val])
|
|
;
|
|
true
|
|
),
|
|
Counting1 is Counting + 1,
|
|
generate_evidence(S, N, Ev, Counting1).
|
|
|