Evolutionary algorithm: Difference between revisions
m
Order of sections.
m (BBC BASIC moved to the BASIC section.) |
m (Order of sections.) |
||
Line 1,186:
#
</pre>
=={{header|BASIC}}==▼
==={{header|BBC BASIC}}===▼
<syntaxhighlight lang="bbcbasic"> target$ = "METHINKS IT IS LIKE A WEASEL"▼
parent$ = "IU RFSGJABGOLYWF XSMFXNIABKT"▼
mutation_rate = 0.5▼
children% = 10▼
DIM child$(children%)▼
REPEAT▼
bestfitness = 0▼
bestindex% = 0▼
FOR index% = 1 TO children%▼
child$(index%) = FNmutate(parent$, mutation_rate)▼
fitness = FNfitness(target$, child$(index%))▼
IF fitness > bestfitness THEN▼
bestfitness = fitness▼
bestindex% = index%▼
ENDIF▼
NEXT index%▼
parent$ = child$(bestindex%)▼
PRINT parent$▼
UNTIL parent$ = target$▼
END▼
DEF FNfitness(text$, ref$)▼
LOCAL I%, F%▼
FOR I% = 1 TO LEN(text$)▼
IF MID$(text$, I%, 1) = MID$(ref$, I%, 1) THEN F% += 1▼
NEXT▼
= F% / LEN(text$)▼
DEF FNmutate(text$, rate)▼
LOCAL C%▼
IF rate > RND(1) THEN▼
C% = 63+RND(27)▼
IF C% = 64 C% = 32▼
MID$(text$, RND(LEN(text$)), 1) = CHR$(C%)▼
ENDIF▼
= text$</syntaxhighlight>▼
=={{header|Batch File}}==
Line 1,311 ⟶ 1,353:
Done.
</pre>
▲=={{header|BASIC}}==
▲==={{header|BBC BASIC}}===
▲<syntaxhighlight lang="bbcbasic"> target$ = "METHINKS IT IS LIKE A WEASEL"
▲ parent$ = "IU RFSGJABGOLYWF XSMFXNIABKT"
▲ mutation_rate = 0.5
▲ children% = 10
▲ DIM child$(children%)
▲ REPEAT
▲ bestfitness = 0
▲ bestindex% = 0
▲ FOR index% = 1 TO children%
▲ child$(index%) = FNmutate(parent$, mutation_rate)
▲ fitness = FNfitness(target$, child$(index%))
▲ IF fitness > bestfitness THEN
▲ bestfitness = fitness
▲ bestindex% = index%
▲ ENDIF
▲ NEXT index%
▲ parent$ = child$(bestindex%)
▲ PRINT parent$
▲ UNTIL parent$ = target$
▲ END
▲ DEF FNfitness(text$, ref$)
▲ LOCAL I%, F%
▲ FOR I% = 1 TO LEN(text$)
▲ IF MID$(text$, I%, 1) = MID$(ref$, I%, 1) THEN F% += 1
▲ NEXT
▲ = F% / LEN(text$)
▲ DEF FNmutate(text$, rate)
▲ LOCAL C%
▲ IF rate > RND(1) THEN
▲ C% = 63+RND(27)
▲ IF C% = 64 C% = 32
▲ MID$(text$, RND(LEN(text$)), 1) = CHR$(C%)
▲ ENDIF
▲ = text$</syntaxhighlight>
=={{header|C}}==
|