finalize jit-bayes

This commit is contained in:
NunoSempere 2023-05-24 16:28:31 -07:00
parent 218df1179f
commit 90739ce4a8
2 changed files with 11 additions and 11 deletions

Binary file not shown.

View File

@ -51,13 +51,13 @@ proc getOEIS(): seq[seq[string]] =
var seqs = getOEIS()
## Sequence helpers
proc startsWithSubsequence(xs: seq[string], ys: seq[string]): bool =
if xs.len == 0:
proc startsWithSubsequence(subseq: seq[string], xs: seq[string]): bool =
if subseq.len == 0:
return true
elif ys.len == 0:
elif xs.len == 0:
return false
elif xs[0] == ys[0]:
return startsWithSubsequence(xs[1..<xs.len], ys[1..<ys.len])
elif subseq[0] == xs[0]:
return startsWithSubsequence(subseq[1..<subseq.len], xs[1..<xs.len])
else:
return false
@ -120,9 +120,6 @@ proc jitBayesLoop(
num_hypotheses_step: int,
) =
print "## Prediction with limited number of hypotheses (~JIT-Bayes)"
if n_observations_seen < 1:
echo "in jitBayesLoop function, n_observations_seen must be 1 or greater"
return
var num_hypotheses = initial_num_hypotheses
var hypotheses = seqs[0..<num_hypotheses]
@ -143,12 +140,12 @@ proc jitBayesLoop(
var concordant_hypotheses: seq[seq[string]]
while (not found_concordant_hypothesis) and ( num_hypotheses < seqs.len ):
echo "Correct continuation not found in set of hypotheses of size ", num_hypotheses, "/", seqs.len, ". Increasing size of the set of hypotheses."
echo "Correct continuation, " , correct_continuation, " not found in set of hypotheses of size ", num_hypotheses, "/", seqs.len, ". Increasing size of the set of hypotheses."
num_hypotheses = num_hypotheses + num_hypotheses_step
if num_hypotheses > seqs.len:
num_hypotheses = seqs.len
hypotheses = seqs[0..<num_hypotheses]
concordant_hypotheses = filter(hypotheses, proc(h: seq[string]): bool = (h.len > i) and h[i] == observations[i])
concordant_hypotheses = filter(hypotheses, proc(h: seq[string]): bool = (h.len > i) and startsWithSubsequence(observations[0..i], h))
if concordant_hypotheses.len > 0:
found_concordant_hypothesis = true
@ -157,6 +154,7 @@ proc jitBayesLoop(
return
else:
echo "Increased number of hypotheses to ", num_hypotheses, ", and found ", concordant_hypotheses.len, " concordant hypotheses. Continuing"
## print concordant_hypotheses
else:
echo "Correct continuation was ", correct_continuation
@ -168,13 +166,15 @@ proc jitBayesLoop(
echo ""
## var observations = @["1", "2", "3", "4", "5", "6"]
var observations = @["1", "2", "3", "23"]
echo "## Full prediction with access to all hypotheses (~Solomonoff)"
var observations = @["1", "2", "3"]
echo "## Initial sequence: ", observations
let continuation_probabilities = predictContinuation(seqs, observations)
print continuation_probabilities
echo ""
observations = @["1", "2", "3", "23", "11", "18", "77", "46", "84"]
jitBayesLoop(seqs, observations, 3, 1_000, 2_000)
echo ""