Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
|
|
@ -0,0 +1,53 @@
|
|||
Module WeaselAlgorithm2 {
|
||||
Print "Evolutionary Algorithm"
|
||||
\\ Weasel Algorithm
|
||||
\\ Using dynamic array, which expand if no fitness change,
|
||||
\\ and reduce to minimum when fitness changed
|
||||
l$="ABCDEFGHIJKLMNOPQRSTUVWXYZ "
|
||||
randomstring$=lambda$ l$ ->{
|
||||
res$=""
|
||||
For i=1 to 28: res$+=Mid$(L$,Random(1,27),1):next i
|
||||
=res$
|
||||
}
|
||||
m$="METHINKS IT IS LIKE A WEASEL"
|
||||
lm=len(m$)
|
||||
fitness=lambda m$, lm (this$)-> {
|
||||
score=0 : For i=1 to lm {score+=If(mid$(m$,i,1)=mid$(this$, i, 1)->1,0)} : =score
|
||||
}
|
||||
Mutate$=lambda$ l$ (w$)-> {
|
||||
for i=1 to len(w$) {
|
||||
if random(1,100)<=5 then { insert i, 1 w$=mid$(l$, random(1,27),1) }
|
||||
}
|
||||
=w$
|
||||
}
|
||||
f$=randomstring$()
|
||||
topscore=0
|
||||
last=0
|
||||
Pen 11 {Print "Fitness |Target:", @(16),m$, @(47),"|Total Strings"}
|
||||
Print Over $(3,8), str$(topscore/28,"##0.0%"),"",$(0),f$, 0
|
||||
count=0
|
||||
gen=30
|
||||
mut=0
|
||||
{
|
||||
last=0
|
||||
Dim a$(1 to gen)<<mutate$(f$)
|
||||
mut+=gen
|
||||
oldscore=topscore
|
||||
For i=1 to gen {
|
||||
topscore=max.data(topscore, fitness(a$(i)))
|
||||
If oldscore<topscore Then last=i: oldscore=topscore
|
||||
}
|
||||
If last>0 Then {
|
||||
f$=a$(last) : gen=30
|
||||
} Else gen+=50
|
||||
Print Over $(3,8), str$(topscore/28,"##0.0%"), "",$(0),f$, mut : refresh
|
||||
count+=min(gen,i)
|
||||
If topscore<28 Then loop
|
||||
}
|
||||
Print
|
||||
Print "Results"
|
||||
Print "I found this:"; a$(last)
|
||||
Print "Total strings which evalute fitness:"; count
|
||||
Print "Done"
|
||||
}
|
||||
WeaselAlgorithm2
|
||||
Loading…
Add table
Add a link
Reference in a new issue