Сделайте агент RL, чтобы играть в игру против человека - PullRequest
0 голосов
/ 28 февраля 2020

В моей настройке я использую stable-baselines , чтобы создать агента, который найдет хорошую политику для покупки и продажи на биржевом рынке.

С этой целью Я создал 3 вспомогательных файла для создания своего окружения.

Один - это спот-курсы данного обменного курса, один - действия клиента (Buy, Sell, Do nothing), а другой - суммы, используемые клиентами. в этой настройке.

Каждая строка в данных представляет день. и каждый столбец секунда в день. Таким образом, спотовая ставка [i, j] соответствует действию клиента и сумме i-го дня и j-й секунды.

Я хочу, чтобы мой агент отвечал на действия клиента. Поэтому, если клиент совершает покупку, для моего агента имеет смысл сделать ту же сумму, что и на продажу, чтобы уменьшить его воздействие или разбить сумму на более мелкие фрагменты с течением времени.

По сути, клиенты нарушают работу агент каждый раз.

Итак, я сделал функцию

def _client_action(self):
   spot = spots[i,j]
   amount = amounts[i,j]
   action = actions[i,j]

   # Disrupt the agent's variables with this function
   transaction(spot, amount,action)

def _agent_action(self, action):
   spot = spots[i,j]
   transaction(spot, action[0], action[1])

def step(self, action):
   _client_action()
   agent_action()

   reward = ...
   obs = self._next_obs()

   return obs, reward, done, {}

Возможна ли эта среда? Я начал это с парадигмы Альфа Go

Я хочу, чтобы моя система реагировала, когда против него предпринимаются действия. Но все, что я думаю, это делает случайные шаги. Я использую A2 C с MlpPolicy.

Затем приведенный ниже код тестирования должен быть скорректирован. Я предоставлю новые данные о споте, c_amount, c_action или поочередно предоставлю их, и агент должен вывести, что делать (купить X, продать X, ничего не делать).

obs = env.reset()
        for i in range(0, len(client_amounts.index)):
            for j in range(0, len(client_amounts.columns)):
                c_amount = client_amounts.iloc[i,j]
                c_action = client_actions.iloc[i,j]

                action, _states = model.predict(obs)
                obs, rewards, dones, info = env.step(action)
                env.render()
...