-
Notifications
You must be signed in to change notification settings - Fork 18
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
12 changed files
with
266 additions
and
9 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1 +1 @@ | ||
11.9.0 | ||
11.9.1 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
---------------------- | ||
Evolutionary algorithm | ||
---------------------- | ||
|
||
See https://en.wikipedia.org/wiki/Evolutionary_algorithm |
68 changes: 68 additions & 0 deletions
68
reasoning/evolutionary-algorithm/evolutionary-algorithm-answer.n3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,68 @@ | ||
% evolution=1 score=26 value='H ENKLACOAMTGRHPENXRF FIDNHL' | ||
% evolution=2 score=25 value='H EAKLACOAMTGRHPENXRF FIANHL' | ||
% evolution=3 score=24 value='H EAKLASOAMTGRHPENXRF FIANHL' | ||
% evolution=4 score=23 value='H EAILASOAFTGRHPENXRF FYANHL' | ||
% evolution=5 score=22 value='H EAILASOAFTGRHPYNXRF FEANHL' | ||
% evolution=6 score=21 value='H EAILAS AFTRRHPYNXRF FEANHL' | ||
% evolution=7 score=20 value='H EAILAS ABTRR PYNXRF FEANHL' | ||
% evolution=8 score=19 value='M EAILAS ABTRR PYNXRF QEANHL' | ||
% evolution=9 score=18 value='M EAILAS WLTRS PYNXRF QEANHL' | ||
% evolution=10 score=17 value='M EAILAS ILTRS PYNXRF QEANHL' | ||
% evolution=11 score=16 value='M EAILAS ITTRS PYNXRF QEANHL' | ||
% evolution=12 score=15 value='M EAILMS ITHRS PYKXRF QEANHL' | ||
% evolution=13 score=14 value='M EAILMS ITHRS PYKXCA QEANHL' | ||
% evolution=14 score=13 value='M EAILMS ITHRS LYKOCA QEANHL' | ||
% evolution=15 score=12 value='M EHILMS ITHRS LYKOCA QEANHL' | ||
% evolution=16 score=11 value='M EHILMS ITHRS LYKECA QEANHL' | ||
% evolution=17 score=10 value='M EHILMS IT DS LYKECA QEANHL' | ||
% evolution=18 score=9 value='M EHINMS IT DS LYKECA QEANHL' | ||
% evolution=19 score=8 value='M WHINMS IT DS LYKECA QEANEL' | ||
% evolution=20 score=7 value='MEWHINMS IT DS LYKECA QEANEL' | ||
% evolution=21 score=7 value='MEHHINGS IT DS LYKECA QEANEL' | ||
% evolution=22 score=6 value='MEHHINGS IT DS LYKE A QEANEL' | ||
% evolution=23 score=6 value='MEHHINAS IT MS LYKE A QEAGEL' | ||
% evolution=24 score=6 value='MEHHINAS IT KS LYKE A QEAGEL' | ||
% evolution=25 score=6 value='MEHHINAS IT HS LYKE A QEAGEL' | ||
% evolution=26 score=6 value='MEHHINAS IT HS L KE A QEAGEL' | ||
% evolution=27 score=6 value='MEHHINAS IT FS L KE A QEAGEL' | ||
% evolution=28 score=6 value='MEHHINAS IT FS L KE A QEAGEL' | ||
% evolution=29 score=5 value='MEHHINAS IT FS LIKE A QEAGEL' | ||
% evolution=30 score=5 value='MEHHINAS IT FS LIKE A QEAGEL' | ||
% evolution=31 score=4 value='MEHHINAS IT FS LIKE A QEASEL' | ||
% evolution=32 score=4 value='MEHHINAS IT FS LIKE A QEASEL' | ||
% evolution=33 score=4 value='ME HINAS IT FS LIKE A QEASEL' | ||
% evolution=34 score=4 value='ME HINAS IT FS LIKE A QEASEL' | ||
% evolution=35 score=3 value='ME HINAS IT FS LIKE A WEASEL' | ||
% evolution=36 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=37 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=38 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=39 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=40 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=41 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=42 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=43 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=44 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=45 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=46 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=47 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=48 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=49 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=50 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=51 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=52 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=53 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=54 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=55 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=56 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=57 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=58 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=59 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=60 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=61 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=62 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=63 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=64 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=65 score=0 value='METHINKS IT IS LIKE A WEASEL' | ||
@prefix : <https://eyereasoner.github.io/ns#>. | ||
|
||
"METHINKS IT IS LIKE A WEASEL" :solve true. |
104 changes: 104 additions & 0 deletions
104
reasoning/evolutionary-algorithm/evolutionary-algorithm-proof.n3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,104 @@ | ||
% evolution=1 score=26 value='H ENKLACOAMTGRHPENXRF FIDNHL' | ||
% evolution=2 score=25 value='H EAKLACOAMTGRHPENXRF FIANHL' | ||
% evolution=3 score=24 value='H EAKLASOAMTGRHPENXRF FIANHL' | ||
% evolution=4 score=23 value='H EAILASOAFTGRHPENXRF FYANHL' | ||
% evolution=5 score=22 value='H EAILASOAFTGRHPYNXRF FEANHL' | ||
% evolution=6 score=21 value='H EAILAS AFTRRHPYNXRF FEANHL' | ||
% evolution=7 score=20 value='H EAILAS ABTRR PYNXRF FEANHL' | ||
% evolution=8 score=19 value='M EAILAS ABTRR PYNXRF QEANHL' | ||
% evolution=9 score=18 value='M EAILAS WLTRS PYNXRF QEANHL' | ||
% evolution=10 score=17 value='M EAILAS ILTRS PYNXRF QEANHL' | ||
% evolution=11 score=16 value='M EAILAS ITTRS PYNXRF QEANHL' | ||
% evolution=12 score=15 value='M EAILMS ITHRS PYKXRF QEANHL' | ||
% evolution=13 score=14 value='M EAILMS ITHRS PYKXCA QEANHL' | ||
% evolution=14 score=13 value='M EAILMS ITHRS LYKOCA QEANHL' | ||
% evolution=15 score=12 value='M EHILMS ITHRS LYKOCA QEANHL' | ||
% evolution=16 score=11 value='M EHILMS ITHRS LYKECA QEANHL' | ||
% evolution=17 score=10 value='M EHILMS IT DS LYKECA QEANHL' | ||
% evolution=18 score=9 value='M EHINMS IT DS LYKECA QEANHL' | ||
% evolution=19 score=8 value='M WHINMS IT DS LYKECA QEANEL' | ||
% evolution=20 score=7 value='MEWHINMS IT DS LYKECA QEANEL' | ||
% evolution=21 score=7 value='MEHHINGS IT DS LYKECA QEANEL' | ||
% evolution=22 score=6 value='MEHHINGS IT DS LYKE A QEANEL' | ||
% evolution=23 score=6 value='MEHHINAS IT MS LYKE A QEAGEL' | ||
% evolution=24 score=6 value='MEHHINAS IT KS LYKE A QEAGEL' | ||
% evolution=25 score=6 value='MEHHINAS IT HS LYKE A QEAGEL' | ||
% evolution=26 score=6 value='MEHHINAS IT HS L KE A QEAGEL' | ||
% evolution=27 score=6 value='MEHHINAS IT FS L KE A QEAGEL' | ||
% evolution=28 score=6 value='MEHHINAS IT FS L KE A QEAGEL' | ||
% evolution=29 score=5 value='MEHHINAS IT FS LIKE A QEAGEL' | ||
% evolution=30 score=5 value='MEHHINAS IT FS LIKE A QEAGEL' | ||
% evolution=31 score=4 value='MEHHINAS IT FS LIKE A QEASEL' | ||
% evolution=32 score=4 value='MEHHINAS IT FS LIKE A QEASEL' | ||
% evolution=33 score=4 value='ME HINAS IT FS LIKE A QEASEL' | ||
% evolution=34 score=4 value='ME HINAS IT FS LIKE A QEASEL' | ||
% evolution=35 score=3 value='ME HINAS IT FS LIKE A WEASEL' | ||
% evolution=36 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=37 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=38 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=39 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=40 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=41 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=42 score=3 value='ME HINAS IT BS LIKE A WEASEL' | ||
% evolution=43 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=44 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=45 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=46 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=47 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=48 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=49 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=50 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=51 score=2 value='ME HINKS IT BS LIKE A WEASEL' | ||
% evolution=52 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=53 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=54 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=55 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=56 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=57 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=58 score=2 value='ME HINKS IT AS LIKE A WEASEL' | ||
% evolution=59 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=60 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=61 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=62 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=63 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=64 score=1 value='ME HINKS IT IS LIKE A WEASEL' | ||
% evolution=65 score=0 value='METHINKS IT IS LIKE A WEASEL' | ||
@prefix skolem: <https://eyereasoner.github.io/.well-known/genid/8df1590d-d760-44ac-bfc9-d45adcc43e1c#>. | ||
@prefix r: <http://www.w3.org/2000/10/swap/reason#>. | ||
@prefix : <https://eyereasoner.github.io/ns#>. | ||
@prefix log: <http://www.w3.org/2000/10/swap/log#>. | ||
@prefix n3: <http://www.w3.org/2004/06/rei#>. | ||
@prefix var: <http://www.w3.org/2000/10/swap/var#>. | ||
|
||
skolem:proof a r:Proof, r:Conjunction; | ||
r:component skolem:lemma1; | ||
r:gives { | ||
"METHINKS IT IS LIKE A WEASEL" :solve true. | ||
}. | ||
|
||
skolem:lemma1 a r:Inference; | ||
r:gives { | ||
"METHINKS IT IS LIKE A WEASEL" :solve true. | ||
}; | ||
r:evidence ( | ||
[ a r:Fact; r:gives {("consult" "./evolutionary-algorithm.pl") log:herbrand true}] | ||
[ a r:Fact; r:gives {("seed(12)") log:compoundTerm "seed(12)"}] | ||
[ a r:Fact; r:gives {("set_random" "seed(12)") log:herbrand true}] | ||
[ a r:Fact; r:gives {"METHINKS IT IS LIKE A WEASEL" :solve true}] | ||
); | ||
r:binding [ r:variable [ n3:uri "http://www.w3.org/2000/10/swap/var#x_0"]; r:boundTo "seed(12)"]; | ||
r:rule skolem:lemma2. | ||
|
||
skolem:lemma2 a r:Extraction; | ||
r:gives { | ||
@forAll var:x_0. { | ||
("consult" "./evolutionary-algorithm.pl") log:herbrand true. | ||
("seed(12)") log:compoundTerm var:x_0. | ||
("set_random" var:x_0) log:herbrand true. | ||
"METHINKS IT IS LIKE A WEASEL" :solve true. | ||
} => { | ||
"METHINKS IT IS LIKE A WEASEL" :solve true. | ||
}. | ||
}; | ||
r:because [ a r:Parsing; r:source <https://eyereasoner.github.io/eye/reasoning/evolutionary-algorithm/evolutionary-algorithm-query.n3>]. | ||
|
10 changes: 10 additions & 0 deletions
10
reasoning/evolutionary-algorithm/evolutionary-algorithm-query.n3
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,10 @@ | ||
@prefix log: <http://www.w3.org/2000/10/swap/log#>. | ||
@prefix : <https://eyereasoner.github.io/ns#>. | ||
|
||
{ | ||
("consult" "./evolutionary-algorithm.pl") log:herbrand true. | ||
("set_random" ("seed(12)")!log:compoundTerm) log:herbrand true. | ||
"METHINKS IT IS LIKE A WEASEL" :solve true. | ||
} => { | ||
"METHINKS IT IS LIKE A WEASEL" :solve true. | ||
}. |
60 changes: 60 additions & 0 deletions
60
reasoning/evolutionary-algorithm/evolutionary-algorithm.pl
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
% Original code from https://rosettacode.org/wiki/Evolutionary_algorithm#Prolog | ||
|
||
'<https://eyereasoner.github.io/ns#solve>'(literal(TargetAtom, _), true) :- | ||
atom_codes(TargetAtom, Target), | ||
length(Target, Len), | ||
random_text(Len, Start), | ||
evolve(0, 5, Target, Start). % evolution 0 and 5% probability for a mutation | ||
|
||
random_text(0, []). % generate some random text (fixed length) | ||
random_text(Len, [H|T]) :- | ||
succ(L, Len), | ||
random_alpha(H), | ||
random_text(L, T). | ||
|
||
random_alpha(Ch) :- % generate a single random character | ||
P is random(26), | ||
( P = 0 | ||
-> Ch is 32 | ||
; Ch is P+64 | ||
). | ||
|
||
evolve(Evolution, Probability, Target, mutation(Score, Value)) :- | ||
atom_codes(Val, Value), | ||
format("% evolution=~w score=~w value=~q~n", [Evolution, Score, Val]), | ||
( Score = 0 | ||
-> true | ||
; evolve(Evolution, Probability, Target, Value) | ||
). | ||
evolve(Evolution, Probability, Target, Start) :- | ||
findall(mutation(Score, M), % generate 80 mutations, select the best | ||
( between(1, 80, _), | ||
mutate(Probability, Start, M), | ||
score(M, Score, Target) | ||
), | ||
Mutations | ||
), | ||
sort(Mutations, [Best|_]), | ||
succ(Evolution, Evo), | ||
evolve(Evo, Probability, Target, Best). | ||
|
||
mutate(_, [], []). % mutate(Probability, Input, Output) | ||
mutate(Probability, [H|Txt], [H|Mut]) :- | ||
R is random(100), | ||
R > Probability, | ||
!, | ||
mutate(Probability, Txt, Mut). | ||
mutate(Probability, [_|Txt], [M|Mut]) :- | ||
random_alpha(M), | ||
mutate(Probability, Txt, Mut). | ||
|
||
score(Txt, Score, Target) :- | ||
score(Target, Txt, 0, Score). | ||
|
||
score([], [], Score, Score). % score a generated mutation (count diffs) | ||
score([Ht|Tt], [Ht|Tp], C, Score) :- | ||
!, | ||
score(Tt, Tp, C, Score). | ||
score([_|Tt], [_|Tp], C, Score) :- | ||
succ(C, N), | ||
score(Tt, Tp, N, Score). |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
#!/bin/bash | ||
eye --quiet --wcache https://eyereasoner.github.io/eye/reasoning .. --nope --query https://eyereasoner.github.io/eye/reasoning/evolutionary-algorithm/evolutionary-algorithm-query.n3 --output evolutionary-algorithm-answer.n3 | ||
eye --quiet --wcache https://eyereasoner.github.io/eye/reasoning .. --query https://eyereasoner.github.io/eye/reasoning/evolutionary-algorithm/evolutionary-algorithm-query.n3 --output evolutionary-algorithm-proof.n3 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,18 +1,18 @@ | ||
@prefix : <urn:example:>. | ||
|
||
:a :path :a. | ||
:a :path :d. | ||
:a :path :c. | ||
:a :path :b. | ||
:d :path :a. | ||
:d :path :d. | ||
:d :path :c. | ||
:d :path :b. | ||
:c :path :a. | ||
:d :path :a. | ||
:c :path :d. | ||
:c :path :c. | ||
:c :path :b. | ||
:b :path :a. | ||
:c :path :a. | ||
:b :path :d. | ||
:b :path :c. | ||
:b :path :b. | ||
:b :path :a. | ||
:a :path :d. | ||
:a :path :c. | ||
:a :path :b. | ||
:a :path :a. |