def roomTemperature(): exp = Experiment() plotting = Plotter() plotting.initialize(filt = "median, movingAverage", skip = 500) dimension = 20 exp.run_experiments_multiple(RoomTemperature(), {},\ [VAR(),\ ECVARMAOGD(),\ OnlineWaveFilteringParameterFree(),\ OnlineWaveFilteringParameterFree(),\ OnlineWaveFilteringParameterFree() ],\ [{'p' : 8, 'dim': dimension},\ {'p' : 8, 'dim': dimension, 'lr': 1},\ {'max_k' : 10, 'action_dim': dimension, 'out_dim': dimension, 'opt': Hedge(), 'optForSubPredictors': FTRL()},\ {'max_k' : 30, 'action_dim': dimension, 'out_dim': dimension, 'opt': Hedge(), 'optForSubPredictors': FTRL()},\ {'max_k' : 50, 'action_dim': dimension, 'out_dim': dimension, 'opt': Hedge(), 'optForSubPredictors': FTRL()} ],\ ['VAR_8',\ 'ECVARMA_OGD16',\ 'OnlineWaveFilteringParameterFree10',\ 'OnlineWaveFilteringParameterFree30',\ 'OnlineWaveFilteringParameterFree50' ],\ n_runs = 20,\ plotter = plotting,\ verbose = True, action_generator = ProblemBasedAction(RoomTemperature()))
def sp500(): exp = Experiment() plotting = Plotter() plotting.initialize(filt = "movingAverage", skip = 100) exp.run_experiments_multiple(SP500(), {},\ [ARMA(),\ ARIMA(),\ OnlineWaveFilteringParameterFree(),\ OnlineWaveFilteringParameterFree(),\ OnlineWaveFilteringParameterFree() ],\ [{'p' : 64, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 16, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'max_k' : 20, 'action_dim': 1, 'out_dim': 1, 'opt': Hedge(), 'optForSubPredictors': FTRL()},\ {'max_k' : 50, 'action_dim': 1, 'out_dim': 1, 'opt': Hedge(), 'optForSubPredictors': FTRL()},\ {'max_k' : 100, 'action_dim': 1, 'out_dim': 1, 'opt': Hedge(), 'optForSubPredictors': FTRL()} ],\ ['ARMA_OGD',\ 'ARIMA_OGD',\ 'OnlineWaveFilteringParameterFree20',\ 'OnlineWaveFilteringParameterFree50',\ 'OnlineWaveFilteringParameterFree100' ],\ n_runs = 20,\ plotter = plotting,\ verbose = True, action_generator = ProblemBasedAction(SP500()))
def artif_exp_4(): exp = Experiment() plotting = Plotter() plotting.initialize(yscale='log', filt="median, movingAverage", skip=100, ylabel="Average Squared Error", col=['c', 'r', 'g', 'orange', 'k']) T = 1000 ag = RandomAction(mu=0, sigma=0.3) exp.run_experiments_multiple(Setting4(), {"timesteps" : T},\ [OnlineWaveFilteringParameterFree(),\ OnlineWaveFiltering(),\ EMKalmanFilter(),\ SSIDKalmanFilter(),\ Consistency()],\ [{'timesteps': T, 'max_k' : 30, 'action_dim': 1, 'out_dim': 1, 'opt': Hedge(), 'optForSubPredictors': FTRL()},\ {'timesteps': T, 'k' : 10, 'lr': 1e-2, 'action_dim': 1, 'out_dim': 1, 'R_m': 3.0},\ {'timesteps': T, 'order': 2, 'data': 100, 'iter': 500},\ {'timesteps': T, 'order': 2, 'data': 100},\ {'timesteps': T, 'out_dim': 1}],\ ['OnlineWaveFilteringParameterFree',\ 'OnlineWaveFiltering',\ 'EM',\ '4SID',\ 'Consistency'],\ n_runs = 20,\ plotter = plotting,\ action_generator = ag,\ verbose = True)
def artif_exp_2(): exp = Experiment() plotting = Plotter() plotting.initialize(yscale='log', filt="median, movingAverage", skip=100, ylabel="Average Squared Error", col=['c', 'r', 'g', 'orange', 'k']) A = np.array([[0.999, 0], [0, 0.5]]) B = np.array([[1.0], [1.0]]) C = np.array([[1.0, 1.0]]) D = np.array([[0.0]]) T = 1000 ag = RandomAction(mu=0, sigma=0.3) exp.run_experiments_multiple(LDS(), {"timesteps" : T, 'action_dim': 1, 'hidden_dim': 2, 'out_dim': 1, 'partially_observable': True,\ 'system_params': {'A': A, 'B' : B, 'C': C, 'D': D, 'noise_distribution': 'normal'}},\ [OnlineWaveFilteringParameterFree(),\ OnlineWaveFiltering(),\ EMKalmanFilter(),\ SSIDKalmanFilter(),\ Consistency()],\ [{'timesteps': T, 'max_k' : 30, 'action_dim': 1, 'out_dim': 1, 'opt': Hedge(), 'optForSubPredictors': FTRL()},\ {'timesteps': T, 'k' : 10, 'lr': 1e-3, 'action_dim': 1, 'out_dim': 1, 'R_m': 1.0},\ {'timesteps': T, 'order': 2, 'data': 100, 'iter': 500},\ {'timesteps': T, 'order': 2, 'data': 100},\ {'timesteps': T, 'out_dim': 1}],\ ['OnlineWaveFilteringParameterFree',\ 'OnlineWaveFiltering',\ 'EM',\ '4SID',\ 'Consistency'],\ n_runs = 20,\ plotter = plotting,\ action_generator = ag,\ verbose = True)
def artif_exp_5(): exp = Experiment() plotting = Plotter() plotting.initialize(yscale='log', filt="median, movingAverage", skip=100, ylabel="Average Squared Error", col=['c', 'r', 'g', 'k']) A = np.diag([0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9]) B = np.eye(10) C = np.random.normal(size=(10, 10)) * 0.3 D = np.zeros((10, 10)) T = 1000 ag = BlockAction(prob_repeat=0.8, sigma=0.3) exp.run_experiments_multiple(LDS(), {'action_dim': 10, 'hidden_dim': 10, 'out_dim': 10, 'partially_observable': True,\ 'system_params': {'A': A, 'B' : B, 'C': C, 'D': D}},\ [OnlineWaveFilteringParameterFree(),\ OnlineWaveFiltering(),\ EMKalmanFilter(),\ Consistency()],\ [{'timesteps': T, 'max_k' : 30, 'action_dim': 10, 'out_dim': 10, 'opt': Hedge(), 'optForSubPredictors': FTRL()},\ {'timesteps': T, 'k' : 30, 'lr': 1e-4, 'action_dim': 10, 'out_dim': 10, 'R_m': 5},\ {'timesteps': T, 'order': 10, 'data': 100, 'iter': 500},\ {'timesteps': T, 'out_dim': 10}],\ ['OnlineWaveFilteringParameterFree',\ 'OnlineWaveFiltering',\ 'EM',\ 'Consistency'],\ action_generator = ag,\ n_runs = 20,\ plotter = plotting,\ verbose = True)
def sp500Tuning(): exp = Experiment() plotting = Plotter() plotting.initialize(filt = "movingAverage", skip = 100) exp.run_experiments_multiple(SP500(), {},\ [ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ARIMA(),\ ],\ [{'p' : 8, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 8, 'optimizer': RealOGD(hyperparameters={'lr':1.0})},\ {'p' : 8, 'optimizer': RealOGD(hyperparameters={'lr':0.1})},\ {'p' : 8, 'optimizer': RealOGD(hyperparameters={'lr':0.01})},\ {'p' : 8, 'optimizer': RealOGD(hyperparameters={'lr':0.001})},\ {'p' : 8, 'optimizer': RealOGD(hyperparameters={'lr':0.0001})},\ {'p' : 16, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 16, 'optimizer': RealOGD(hyperparameters={'lr':1.0})},\ {'p' : 16, 'optimizer': RealOGD(hyperparameters={'lr':0.1})},\ {'p' : 16, 'optimizer': RealOGD(hyperparameters={'lr':0.01})},\ {'p' : 16, 'optimizer': RealOGD(hyperparameters={'lr':0.001})},\ {'p' : 16, 'optimizer': RealOGD(hyperparameters={'lr':0.0001})},\ {'p' : 32, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 32, 'optimizer': RealOGD(hyperparameters={'lr':1.0})},\ {'p' : 32, 'optimizer': RealOGD(hyperparameters={'lr':0.1})},\ {'p' : 32, 'optimizer': RealOGD(hyperparameters={'lr':0.01})},\ {'p' : 32, 'optimizer': RealOGD(hyperparameters={'lr':0.001})},\ {'p' : 32, 'optimizer': RealOGD(hyperparameters={'lr':0.0001})},\ {'p' : 64, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 64, 'optimizer': RealOGD(hyperparameters={'lr':1.0})},\ {'p' : 64, 'optimizer': RealOGD(hyperparameters={'lr':0.1})},\ {'p' : 64, 'optimizer': RealOGD(hyperparameters={'lr':0.01})},\ {'p' : 64, 'optimizer': RealOGD(hyperparameters={'lr':0.001})},\ {'p' : 64, 'optimizer': RealOGD(hyperparameters={'lr':0.0001})},\ {'p' : 8, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 8, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':1.0})},\ {'p' : 8, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.1})},\ {'p' : 8, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.01})},\ {'p' : 8, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.001})},\ {'p' : 8, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.0001})},\ {'p' : 16, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 16, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':1.0})},\ {'p' : 16, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.1})},\ {'p' : 16, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.01})},\ {'p' : 16, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.001})},\ {'p' : 16, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.0001})},\ {'p' : 32, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 32, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':1.0})},\ {'p' : 32, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.1})},\ {'p' : 32, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.01})},\ {'p' : 32, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.001})},\ {'p' : 32, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.0001})},\ {'p' : 64, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':10.0})},\ {'p' : 64, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':1.0})},\ {'p' : 64, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.1})},\ {'p' : 64, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.01})},\ {'p' : 64, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.001})},\ {'p' : 64, 'd' : 2, 'optimizer': RealOGD(hyperparameters={'lr':0.0001})} ],\ ['ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD',\ 'ARIMA_OGD' ],\ n_runs = 5,\ plotter = plotting,\ verbose = True, action_generator = ProblemBasedAction(SP500()))
def roomTemperatureTuning(): exp = Experiment() plotting = Plotter() plotting.initialize(filt = "median, movingAverage", skip = 0, printLast = True) dimension = 20 exp.run_experiments_multiple(RoomTemperature(), {},\ [VAR(),\ VAR(),\ VAR(),\ VAR(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD(),\ ECVARMAOGD() ],\ [{'p' : 8, 'dim': dimension},\ {'p' : 16, 'dim': dimension},\ {'p' : 32, 'dim': dimension},\ {'p' : 64, 'dim': dimension},\ {'p' : 8, 'dim': dimension, 'lr': 1},\ {'p' : 16, 'dim': dimension, 'lr': 1},\ {'p' : 32, 'dim': dimension, 'lr': 1},\ {'p' : 64, 'dim': dimension, 'lr': 1},\ {'p' : 8, 'dim': dimension, 'lr': 0.1},\ {'p' : 16, 'dim': dimension, 'lr': 0.1},\ {'p' : 32, 'dim': dimension, 'lr': 0.1},\ {'p' : 64, 'dim': dimension, 'lr': 0.1},\ {'p' : 8, 'dim': dimension, 'lr': 0.01},\ {'p' : 16, 'dim': dimension, 'lr': 0.01},\ {'p' : 32, 'dim': dimension, 'lr': 0.01},\ {'p' : 64, 'dim': dimension, 'lr': 0.01},\ {'p' : 8, 'dim': dimension, 'lr': 0.001},\ {'p' : 16, 'dim': dimension, 'lr': 0.001},\ {'p' : 32, 'dim': dimension, 'lr': 0.001},\ {'p' : 64, 'dim': dimension, 'lr': 0.001} ],\ ['VAR_8',\ 'VAR_16',\ 'VAR_32',\ 'VAR_64',\ 'ECVARMA_OGD8_1',\ 'ECVARMA_OGD16_1',\ 'ECVARMA_OGD32_1',\ 'ECVARMA_OGD64_1',\ 'ECVARMA_OGD8_01',\ 'ECVARMA_OGD16_01',\ 'ECVARMA_OGD32_01',\ 'ECVARMA_OGD64_01',\ 'ECVARMA_OGD8_001',\ 'ECVARMA_OGD16_001',\ 'ECVARMA_OGD32_001',\ 'ECVARMA_OGD64_001',\ 'ECVARMA_OGD8_0001',\ 'ECVARMA_OGD16_0001',\ 'ECVARMA_OGD32_0001',\ 'ECVARMA_OGD64_0001' ],\ n_runs = 5,\ plotter = plotting,\ verbose = True, action_generator = ProblemBasedAction(RoomTemperature()))