Как вы предварительно обрабатываете пространства дискретных/непрерывных действий в тренажерном зале?

#python #openai-gym

Вопрос:

Я столкнулся с пользовательской средой OpenAI Gym, которая имитирует простую торговую систему. Сценарий выглядит следующим образом: во-первых, агент должен выбрать, хочет ли она ПОКУПАТЬ, ПРОДАВАТЬ или НИЧЕГО НЕ ДЕЛАТЬ. Только в том случае, если выбрана ПОКУПКА или ПРОДАЖА, следует выбрать ресурс, который нуждается в покупке/продаже. После этого она определяет цену покупки/продажи.

 Dict({  "action": "Discrete(3)", //BUY, SELL, DO NOTHING  "resource": "Discrete(3)", //STRAWBERRY, BANANA, APPLE  "amount": "Box(low=0.0, high=100.0)" //BUY/SELL price })  

Есть два вопроса, которые мне на данный момент не ясны, касающиеся предварительной обработки пространства действий.

Вопрос 1: Как вы различаете два разных случая ПОКУПКИ/ПРОДАЖИ (где требуется «ресурс» и «сумма») и НИЧЕГО НЕ ДЕЛАЕТЕ (где больше не требуется никаких действий)? Если разрешить «количество» и «ресурс» независимо от «действия», это приведет к ненужному увеличению размера пространства действий, не так ли? Я предполагаю, что для более крупных примеров такой подход неосуществим. Так как же правильно поступить?

Вопрос 2: Как вы относитесь к пространствам дискретных и непрерывных действий? Я видел примеры, когда непрерывные действия «дискретизируются», но разве это не приводит просто к потере информации? Это просто не кажется элегантным.

Спасибо