Difference between revisions of "King Bot"
From WikiManual
m |
m (cusomizing king bot selection?) |
||
| Line 1: | Line 1: | ||
Selects the most successful bot for a given value of success. Typically this is the bot with the most offspring. | Selects the most successful bot for a given value of success. Typically this is the bot with the most offspring. | ||
| + | ---- | ||
| + | exactly how is this King Bot selected?<br> | ||
| + | wondering how the selection criteria might be customized. | ||
| + | |||
| + | |||
| + | anything to do with this? | ||
| + | <pre> | ||
| + | ' returns the fittest robot (selected through the score function) | ||
| + | ' altered from the bot with the most generations | ||
| + | ' to the bot with the most invested energy in itself and children | ||
| + | Function fittest() As Integer | ||
| + | Dim t As Integer | ||
| + | Dim s As Double | ||
| + | Dim Mx As Double | ||
| + | Mx = 0 | ||
| + | For t = 1 To MaxRobs | ||
| + | If rob(t).Exist And Not rob(t).Veg Then | ||
| + | s = score(t, 1, 2, 0) | ||
| + | If s >= Mx Then | ||
| + | Mx = s | ||
| + | fittest = t | ||
| + | End If | ||
| + | End If | ||
| + | Next t | ||
| + | End Function | ||
| + | </pre> | ||
| + | or this? | ||
| + | <pre> | ||
| + | ' does various things: with | ||
| + | ' tipo=0 returns the number of descendants for maxrec generations | ||
| + | ' tipo=1 highlights the descendants | ||
| + | ' tipo=2 searches up the tree for eldest ancestor, then down again | ||
| + | ' tipo=3 draws the lines showing kinship relations | ||
| + | Function score(ByVal r As Integer, ByVal reclev As Integer, maxrec As Integer, | ||
| + | |||
| + | tipo As Integer) As Double | ||
| + | Dim al As Integer | ||
| + | Dim dx As Single | ||
| + | Dim dy As Single | ||
| + | Dim cr As Long | ||
| + | Dim ct As Long | ||
| + | Dim t As Integer | ||
| + | If tipo = 2 Then plines (r) | ||
| + | score = 0 | ||
| + | For t = 1 To MaxRobs | ||
| + | If rob(t).Exist Then | ||
| + | If rob(t).parent = rob(r).AbsNum Then | ||
| + | If reclev < maxrec Then score = score + score(t, reclev + 1, maxrec, tipo) | ||
| + | score = score + InvestedEnergy(t) | ||
| + | If tipo = 1 Then rob(t).highlight = True | ||
| + | If tipo = 3 Then | ||
| + | dx = (rob(r).pos.x - rob(t).pos.x) / 2 | ||
| + | dy = (rob(r).pos.y - rob(t).pos.y) / 2 | ||
| + | cr = RGB(128, 128, 128) | ||
| + | ct = vbWhite | ||
| + | If rob(r).AbsNum > rob(t).AbsNum Then | ||
| + | cr = vbWhite | ||
| + | ct = RGB(128, 128, 128) | ||
| + | End If | ||
| + | Line (rob(t).pos.x, rob(t).pos.y)-Step(dx, dy), ct | ||
| + | Line -(rob(r).pos.x, rob(r).pos.y), cr | ||
| + | End If | ||
| + | End If | ||
| + | End If | ||
| + | Next t | ||
| + | If tipo = 1 Then | ||
| + | Form1.Cls | ||
| + | DrawAllRobs | ||
| + | End If | ||
| + | End Function | ||
| + | </pre> | ||
[[Category:Bottype]] | [[Category:Bottype]] | ||
Revision as of 09:57, 25 February 2006
Selects the most successful bot for a given value of success. Typically this is the bot with the most offspring.
exactly how is this King Bot selected?
wondering how the selection criteria might be customized.
anything to do with this?
' returns the fittest robot (selected through the score function)
' altered from the bot with the most generations
' to the bot with the most invested energy in itself and children
Function fittest() As Integer
Dim t As Integer
Dim s As Double
Dim Mx As Double
Mx = 0
For t = 1 To MaxRobs
If rob(t).Exist And Not rob(t).Veg Then
s = score(t, 1, 2, 0)
If s >= Mx Then
Mx = s
fittest = t
End If
End If
Next t
End Function
or this?
' does various things: with
' tipo=0 returns the number of descendants for maxrec generations
' tipo=1 highlights the descendants
' tipo=2 searches up the tree for eldest ancestor, then down again
' tipo=3 draws the lines showing kinship relations
Function score(ByVal r As Integer, ByVal reclev As Integer, maxrec As Integer,
tipo As Integer) As Double
Dim al As Integer
Dim dx As Single
Dim dy As Single
Dim cr As Long
Dim ct As Long
Dim t As Integer
If tipo = 2 Then plines (r)
score = 0
For t = 1 To MaxRobs
If rob(t).Exist Then
If rob(t).parent = rob(r).AbsNum Then
If reclev < maxrec Then score = score + score(t, reclev + 1, maxrec, tipo)
score = score + InvestedEnergy(t)
If tipo = 1 Then rob(t).highlight = True
If tipo = 3 Then
dx = (rob(r).pos.x - rob(t).pos.x) / 2
dy = (rob(r).pos.y - rob(t).pos.y) / 2
cr = RGB(128, 128, 128)
ct = vbWhite
If rob(r).AbsNum > rob(t).AbsNum Then
cr = vbWhite
ct = RGB(128, 128, 128)
End If
Line (rob(t).pos.x, rob(t).pos.y)-Step(dx, dy), ct
Line -(rob(r).pos.x, rob(r).pos.y), cr
End If
End If
End If
Next t
If tipo = 1 Then
Form1.Cls
DrawAllRobs
End If
End Function