36 lines
1.0 KiB
Python
36 lines
1.0 KiB
Python
#
|
|
# OtterTune - ou_process.py
|
|
#
|
|
# Copyright (c) 2017-18, Carnegie Mellon University Database Group
|
|
#
|
|
# from: https://github.com/KqSMea8/CDBTune
|
|
# Zhang, Ji, et al. "An end-to-end automatic cloud database tuning system using
|
|
# deep reinforcement learning." Proceedings of the 2019 International Conference
|
|
# on Management of Data. ACM, 2019
|
|
|
|
import numpy as np
|
|
|
|
|
|
class OUProcess(object):
|
|
|
|
def __init__(self, n_actions, theta=0.15, mu=0, sigma=0.1, ):
|
|
|
|
self.n_actions = n_actions
|
|
self.theta = theta
|
|
self.mu = mu
|
|
self.sigma = sigma
|
|
self.current_value = np.ones(self.n_actions) * self.mu
|
|
|
|
def reset(self, sigma=0, theta=0):
|
|
self.current_value = np.ones(self.n_actions) * self.mu
|
|
if sigma != 0:
|
|
self.sigma = sigma
|
|
if theta != 0:
|
|
self.theta = theta
|
|
|
|
def noise(self):
|
|
x = self.current_value
|
|
dx = self.theta * (self.mu - x) + self.sigma * np.random.randn(len(x))
|
|
self.current_value = x + dx
|
|
return self.current_value
|