Better tests
alias sit="desk sit"
This commit is contained in:
parent
b7ab7d0664
commit
e44db33a91
83
test.py
83
test.py
@ -3,6 +3,7 @@ from time import sleep, time
|
|||||||
import numpy as np
|
import numpy as np
|
||||||
import pygame
|
import pygame
|
||||||
import yaml
|
import yaml
|
||||||
|
import random
|
||||||
|
|
||||||
from columbus import env
|
from columbus import env
|
||||||
from columbus.observables import Observable, CnnObservable
|
from columbus.observables import Observable, CnnObservable
|
||||||
@ -13,11 +14,14 @@ from priorConditionedAnnealing import pca
|
|||||||
|
|
||||||
|
|
||||||
def main():
|
def main():
|
||||||
agent_func = choosePlayType()
|
alg_name, agent_func = choosePlayType()
|
||||||
env = chooseEnv()
|
env = chooseEnv(alg_name)
|
||||||
while True:
|
while True:
|
||||||
playEnv(env, agent_func)
|
playEnv(env, agent_func)
|
||||||
input('<again?>')
|
try:
|
||||||
|
agent_func.reset()
|
||||||
|
except:
|
||||||
|
pass
|
||||||
env.close()
|
env.close()
|
||||||
|
|
||||||
|
|
||||||
@ -56,7 +60,7 @@ def loadConfigDefinedEnv(EnvClass):
|
|||||||
return EnvClass(fps=30, **cur)
|
return EnvClass(fps=30, **cur)
|
||||||
|
|
||||||
|
|
||||||
def chooseEnv():
|
def chooseEnv(alg_name):
|
||||||
envs = list(getAvaibleEnvs())
|
envs = list(getAvaibleEnvs())
|
||||||
for i, Env in enumerate(envs):
|
for i, Env in enumerate(envs):
|
||||||
print('['+str(i)+'] '+Env.__name__)
|
print('['+str(i)+'] '+Env.__name__)
|
||||||
@ -72,7 +76,7 @@ def chooseEnv():
|
|||||||
if envs[i] in [env.ColumbusConfigDefined]:
|
if envs[i] in [env.ColumbusConfigDefined]:
|
||||||
return loadConfigDefinedEnv(envs[i])
|
return loadConfigDefinedEnv(envs[i])
|
||||||
Env = envs[i]
|
Env = envs[i]
|
||||||
return Env(fps=30, agent_draw_path=True, path_decay=1/256)
|
return Env(fps=30, agent_draw_path=True, path_decay=1/1024, title_appendix=' ['+alg_name+']', max_steps=30*10, clear_path_on_reset=False)
|
||||||
|
|
||||||
|
|
||||||
def value_func(obs):
|
def value_func(obs):
|
||||||
@ -91,27 +95,33 @@ def human_input(obs, env):
|
|||||||
|
|
||||||
class Colored_Noise():
|
class Colored_Noise():
|
||||||
def __init__(self, beta=1, dim_a=2, samples=2**18):
|
def __init__(self, beta=1, dim_a=2, samples=2**18):
|
||||||
|
self.beta = beta
|
||||||
|
self.dim_a = dim_a
|
||||||
|
self.samples = samples
|
||||||
self.index = 0
|
self.index = 0
|
||||||
self.samples = cn.powerlaw_psd_gaussian(beta, (dim_a, samples))
|
self.reset()
|
||||||
|
|
||||||
def __call__(self, obs, env):
|
def __call__(self, obs, env):
|
||||||
sample = self.samples[:, self.index]
|
sample = self.samples[:, self.index]
|
||||||
self.index += 1
|
self.index += 1
|
||||||
return sample
|
return sample
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.samples = cn.powerlaw_psd_gaussian(
|
||||||
|
self.beta, (self.dim_a, self.samples), random_state=rand_seed())
|
||||||
|
|
||||||
|
|
||||||
class PCA_Noise():
|
class PCA_Noise():
|
||||||
def __init__(self, dim_a=2, kernel_func='SE_1.41_1', window=8, ssf=-1):
|
def __init__(self, dim_a=2, kernel_func='SE_1.41_1', window=64, ssf=-1):
|
||||||
self.dist = pca.PCA_Distribution(
|
self.dim_a = dim_a
|
||||||
action_dim=dim_a, par_strength='CONT_DIAG', kernel_func=kernel_func, window=window)
|
self.kernel_func = kernel_func
|
||||||
self.dist.proba_distribution(th.Tensor([[0]*2]), th.Tensor([[1]*2]))
|
self.window = window
|
||||||
self.traj = [[0]*dim_a]
|
self.ssf = ssf
|
||||||
self.ssf = 32
|
|
||||||
self.index = 0
|
self.index = 0
|
||||||
|
self.reset()
|
||||||
|
|
||||||
def __call__(self, obs, env):
|
def __call__(self, obs, env):
|
||||||
if self.index == self.ssf:
|
if self.ssf != -1 and self.index % self.ssf == 0:
|
||||||
self.index = 0
|
|
||||||
self.traj = [[0]*len(self.traj[0])]
|
self.traj = [[0]*len(self.traj[0])]
|
||||||
traj = th.Tensor(self.traj).unsqueeze(0)
|
traj = th.Tensor(self.traj).unsqueeze(0)
|
||||||
sample = self.dist.sample(traj).squeeze(0)
|
sample = self.dist.sample(traj).squeeze(0)
|
||||||
@ -119,10 +129,50 @@ class PCA_Noise():
|
|||||||
self.index += 1
|
self.index += 1
|
||||||
return sample
|
return sample
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.dist = pca.PCA_Distribution(
|
||||||
|
action_dim=self.dim_a, par_strength='CONT_DIAG', kernel_func=self.kernel_func, window=self.window)
|
||||||
|
self.dist.proba_distribution(th.Tensor([[0]*2]), th.Tensor([[1]*2]))
|
||||||
|
self.traj = [[0]*self.dim_a]
|
||||||
|
|
||||||
|
|
||||||
|
class Colored_PCA_Noise():
|
||||||
|
def __init__(self, beta=1, dim_a=2, samples=2**18, kernel_func='SE_1.41_1', window=64, ssf=-1):
|
||||||
|
self.beta = beta
|
||||||
|
self.dim_a = dim_a
|
||||||
|
self.samples = samples
|
||||||
|
self.kernel_func = kernel_func
|
||||||
|
self.window = window
|
||||||
|
self.ssf = ssf
|
||||||
|
self.index = 0
|
||||||
|
self.reset()
|
||||||
|
|
||||||
|
def __call__(self, obs, env):
|
||||||
|
epsilon = self.samples[:, self.index]
|
||||||
|
if self.ssf != -1 and self.index % self.ssf == 0:
|
||||||
|
self.traj = [[0]*len(self.traj[0])]
|
||||||
|
traj = th.Tensor(self.traj).unsqueeze(0)
|
||||||
|
sample = self.dist.sample(traj).squeeze(0)
|
||||||
|
self.traj.append(sample)
|
||||||
|
self.index += 1
|
||||||
|
return sample
|
||||||
|
|
||||||
|
def reset(self):
|
||||||
|
self.dist = pca.PCA_Distribution(
|
||||||
|
action_dim=self.dim_a, par_strength='CONT_DIAG', kernel_func=self.kernel_func, window=self.window)
|
||||||
|
self.dist.proba_distribution(th.Tensor([[0]*2]), th.Tensor([[1]*2]))
|
||||||
|
self.traj = [[0]*self.dim_a]
|
||||||
|
self.samples = cn.powerlaw_psd_gaussian(
|
||||||
|
self.beta, (self.dim_a, self.samples), random_state=rand_seed())
|
||||||
|
|
||||||
|
|
||||||
|
def rand_seed():
|
||||||
|
return int(99999999 * random.random())
|
||||||
|
|
||||||
|
|
||||||
def choosePlayType():
|
def choosePlayType():
|
||||||
options = {'human': human_input, 'PCA': PCA_Noise(),
|
options = {'human': human_input, 'PCA': PCA_Noise(),
|
||||||
'REX': Colored_Noise(beta=0), 'PINK': Colored_Noise(beta=1), 'BROWN': Colored_Noise(beta=2), 'BETA.5': Colored_Noise(beta=.5)}
|
'REX': Colored_Noise(beta=0), 'PINK': Colored_Noise(beta=1), 'BROWN': Colored_Noise(beta=2), 'BETA.5': Colored_Noise(beta=.5), 'PINK_PCA': Colored_PCA_Noise(beta=1)}
|
||||||
for i, name in enumerate(options):
|
for i, name in enumerate(options):
|
||||||
print('['+str(i)+'] '+name)
|
print('['+str(i)+'] '+name)
|
||||||
while True:
|
while True:
|
||||||
@ -136,7 +186,8 @@ def choosePlayType():
|
|||||||
print(
|
print(
|
||||||
'[!] That is a number, but not one that makes sense in this context...')
|
'[!] That is a number, but not one that makes sense in this context...')
|
||||||
else:
|
else:
|
||||||
return options[list(options.keys())[i]]
|
name = list(options.keys())[i]
|
||||||
|
return name, options[name]
|
||||||
|
|
||||||
|
|
||||||
def playEnv(env, agent_func):
|
def playEnv(env, agent_func):
|
||||||
|
Loading…
Reference in New Issue
Block a user