#test application:
G=Graphics()
v=[]
posx=worldsize/2;posy=worldsize/2
sollx=random()*worldsize;solly=random()*worldsize
lastabs=sqrt((posx-sollx)*(posx-sollx)+(posy-solly)*(posy-solly))
sx=posx;sy=posy
for s in range(100000):
action=step(last,lastaction,input)
if action==1:
posx+=0.1
if action==2:
posx-=0.1
if action==3:
posy+=0.1
if action==4:
posy-=0.1
posx=max(0,min(4-0.1,posx))
posy=max(0,min(4-0.1,posy))
px=posx;py=posy;
if posx>sollx and posy>solly: #simple categorization since there are no SOMs in this implementation
lx=1
if posx>sollx and posy<solly:
lx=2
if posx<sollx and posy>solly:
lx=3
if posx<sollx and posy<solly:
lx=4
abs=sqrt((posx-sollx)*(posx-sollx)+(posy-solly)*(posy-solly))
size=lastabs-abs
lastabs=abs
if abs<0.2:
sollx=random()*worldsize;solly=random()*worldsize
if s>99500 and s%2==0:
G=line([(0,0),(worldsize,0)],rgbcolor=(0,0,1),thickness=2)
G+=line([(worldsize,0),(worldsize,worldsize)],rgbcolor=(0,0,1),thickness=2)
G+=line([(worldsize,worldsize),(0,worldsize)],rgbcolor=(0,0,1),thickness=2)
G+=line([(0,worldsize),(0,0)],rgbcolor=(0,0,1),thickness=2)
#draw sollobj:
G+=line([(sollx,solly),(sollx+0.1,solly)],rgbcolor=(0,1,0),thickness=2)
G+=line([(sollx+0.1,solly),(sollx+0.1,solly+0.1)],rgbcolor=(0,1,0),thickness=2)
G+=line([(sollx+0.1,solly+0.1),(sollx,solly+0.1)],rgbcolor=(0,1,0),thickness=2)
G+=line([(sollx,solly+0.1),(sollx,solly)],rgbcolor=(0,1,0),thickness=2)
#
G+=line([(posx,posy),(posx+0.1,posy)],rgbcolor=(0.00001*s,0,0),thickness=2)
G+=line([(posx+0.1,posy),(posx+0.1,posy+0.1)],rgbcolor=(0.00001*s,0,0),thickness=2)
G+=line([(posx+0.1,posy+0.1),(posx,posy+0.1)],rgbcolor=(0.00001*s,0,0),thickness=2)
G+=line([(posx,posy+0.1),(posx,posy)],rgbcolor=(0.00001*s,0,0),thickness=2)
v.append(G)
sx=posx;sy=posy;
statistics[action]=statistics[action]+1
lastaction=action
last=input
input=envfunc(action)
print "actions used how often:"
for i in range(nactions):
print statistics[i]
a=animate(v,xmin=0,ymin=0)
a.show()
|
|
actions used how often:
4807
25465
22857
23575
23296
|