ਰੇ ਅਤੇ ਪਾਈਗੇਮ ਨਾਲ ਕਸਟਮ ਵਾਤਾਵਰਨ ਪੇਸ਼ ਕਰਨ ਵਿੱਚ ਚੁਣੌਤੀਆਂ
ਫ੍ਰੀਜ਼-ਟੈਗ ਵਰਗੇ ਗੁੰਝਲਦਾਰ ਸਿਮੂਲੇਸ਼ਨਾਂ ਲਈ ਪਾਈਥਨ ਵਿੱਚ ਕਸਟਮ ਵਾਤਾਵਰਨ ਬਣਾਉਣਾ ਅਕਸਰ ਅਣਕਿਆਸੇ ਸਮੱਸਿਆਵਾਂ ਦਾ ਨਤੀਜਾ ਹੋ ਸਕਦਾ ਹੈ, ਖਾਸ ਤੌਰ 'ਤੇ ਜਦੋਂ ਮਲਟੀ-ਏਜੰਟ ਸਿਖਲਾਈ ਲਈ ਰੇ ਵਰਗੇ ਫਰੇਮਵਰਕ ਨਾਲ ਜੋੜਦੇ ਹੋਏ। ਇਸ ਦ੍ਰਿਸ਼ਟੀਕੋਣ ਵਿੱਚ, ਉਪਭੋਗਤਾ ਨੇ ਫ੍ਰੀਜ਼-ਟੈਗ ਸਥਿਤੀ ਦੀ ਨਕਲ ਕਰਨ ਲਈ ਪਾਈਗੇਮ ਦੇ ਨਾਲ ਇੱਕ ਜਿਮ ਵਾਤਾਵਰਣ ਬਣਾਇਆ, ਪਰ ਸਿਖਲਾਈ ਦੌਰਾਨ ਵਾਤਾਵਰਣ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਦੀ ਕੋਸ਼ਿਸ਼ ਕਰਦੇ ਸਮੇਂ ਸਮੱਸਿਆਵਾਂ ਵਿੱਚ ਚਲਦਾ ਹੈ।
ਬੁਨਿਆਦੀ ਮੁੱਦਾ ਇਹ ਹੈ ਕਿ ਸਿਮੂਲੇਸ਼ਨ ਇਰਾਦੇ ਅਨੁਸਾਰ ਪੇਸ਼ ਨਹੀਂ ਕਰਦਾ ਹੈ ਅਤੇ ਸਿਖਲਾਈ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਗੁੰਝਲਦਾਰ ਬਣਾਉਂਦੇ ਹੋਏ, ਕਈ ਪਾਈਗੇਮ ਵਿੰਡੋਜ਼ ਬਣਾਉਂਦਾ ਹੈ। ਭਾਵੇਂ ਜਿਮ ਵਾਤਾਵਰਨ ਦੇ ਹੋਰ ਪਹਿਲੂ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨਾਲ ਸਹੀ ਢੰਗ ਨਾਲ ਕੰਮ ਕਰਦੇ ਹਨ, ਰੇ ਦਾ ਮਲਟੀ-ਏਜੰਟ ਪ੍ਰੌਕਸੀਮਲ ਪਾਲਿਸੀ ਓਪਟੀਮਾਈਜੇਸ਼ਨ (MAPPO) ਐਲਗੋਰਿਦਮ ਇਹਨਾਂ ਮੁੱਦਿਆਂ ਨੂੰ ਪੇਸ਼ ਕਰਦਾ ਪ੍ਰਤੀਤ ਹੁੰਦਾ ਹੈ।
ਰੇ ਵਿਤਰਿਤ ਸਿਖਲਾਈ ਲਈ ਇੱਕ ਸ਼ਾਨਦਾਰ ਫਰੇਮਵਰਕ ਹੈ, ਪਰ ਇਸ ਨੂੰ ਪਾਈਗੇਮ ਵਰਗੀਆਂ ਰੈਂਡਰਿੰਗ ਲਾਇਬ੍ਰੇਰੀਆਂ ਦੇ ਨਾਲ ਚੰਗੀ ਤਰ੍ਹਾਂ ਕੰਮ ਕਰਨ ਲਈ ਵਿੰਡੋ ਜਨਰੇਸ਼ਨ ਅਤੇ ਰੈਂਡਰਿੰਗ ਤਬਦੀਲੀਆਂ ਦੇ ਧਿਆਨ ਨਾਲ ਪ੍ਰਬੰਧਨ ਦੀ ਲੋੜ ਹੈ। ਇਹਨਾਂ ਚਿੰਤਾਵਾਂ ਨੂੰ ਹੱਲ ਕੀਤੇ ਬਿਨਾਂ, ਸਿਖਲਾਈ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਰੋਕਿਆ ਜਾ ਸਕਦਾ ਹੈ, ਨਤੀਜੇ ਵਜੋਂ ਡਿਵੈਲਪਰਾਂ ਲਈ ਨਿਰਾਸ਼ਾਜਨਕ ਨਤੀਜੇ ਨਿਕਲਣਗੇ।
ਹੇਠਾਂ ਦਿੱਤੀ ਚਰਚਾ ਵਿੱਚ, ਅਸੀਂ ਇਹਨਾਂ ਰੈਂਡਰਿੰਗ ਮੁਸ਼ਕਲਾਂ ਦੇ ਸੰਭਾਵਿਤ ਕਾਰਨਾਂ ਨੂੰ ਦੇਖਾਂਗੇ ਅਤੇ ਸਹਿਜ ਸਿਮੂਲੇਸ਼ਨ ਨੂੰ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਖਾਸ ਫਿਕਸ ਪ੍ਰਦਾਨ ਕਰਾਂਗੇ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਅਸੀਂ ਦੇਖਾਂਗੇ ਕਿ ਰੇ ਵਿੱਚ MAPPO ਸਿਖਲਾਈ ਲਈ ਪਾਈਗੇਮ ਡਿਸਪਲੇਅ ਨੂੰ ਕੰਮ ਕਰਦੇ ਹੋਏ ਕਈ ਵਿੰਡੋ ਉਦਾਹਰਨਾਂ ਬਣਾਉਣ ਤੋਂ ਕਿਵੇਂ ਬਚਣਾ ਹੈ।
| ਹੁਕਮ | ਵਰਤੋਂ ਦੀ ਉਦਾਹਰਨ |
|---|---|
| pygame.display.set_mode() | PyGame ਦੀ ਰੈਂਡਰਿੰਗ ਵਿੰਡੋ ਇਸ ਫੰਕਸ਼ਨ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਬਣਾਈ ਗਈ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਣਾ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ ਕਿ ਡੁਪਲੀਕੇਟ ਵਿੰਡੋਜ਼ ਬਣਾਉਣ ਤੋਂ ਬਚਣ ਲਈ ਰੇ ਸਿਰਫ ਇੱਕ ਵਾਰ ਸ਼ੁਰੂ ਕੀਤੀ ਗਈ ਹੈ। |
| pygame.draw.circle() | ਵਾਤਾਵਰਣ ਵਿੱਚ ਹਰੇਕ ਏਜੰਟ ਨੂੰ ਇੱਕ ਚੱਕਰ ਬਣਾਉਂਦਾ ਹੈ. ਇਹ ਫ੍ਰੀਜ਼-ਟੈਗ ਗੇਮ ਵਿੱਚ ਏਜੰਟਾਂ ਦੀ ਕਲਪਨਾ ਕਰਨ ਵਿੱਚ ਸਹਾਇਤਾ ਕਰਦਾ ਹੈ, ਰੰਗ ਦੇ ਅਧਾਰ ਤੇ ਉਹਨਾਂ ਦੀ ਸਥਿਤੀ ਨੂੰ ਵੱਖਰਾ ਕਰਦਾ ਹੈ। |
| pygame.display.flip() | ਰੈਂਡਰਿੰਗ ਦੌਰਾਨ ਆਈਆਂ ਕਿਸੇ ਵੀ ਤਬਦੀਲੀਆਂ ਨੂੰ ਦਰਸਾਉਣ ਲਈ ਡਿਸਪਲੇਅ ਨੂੰ ਅੱਪਡੇਟ ਕਰਦਾ ਹੈ। ਇਹ ਗਾਰੰਟੀ ਦੇਣ ਲਈ ਬਹੁਤ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿ ਵਾਤਾਵਰਣ ਗ੍ਰਾਫਿਕਸ ਹਰ ਸਮੇਂ ਦੇ ਨਾਲ ਬਦਲਦਾ ਹੈ। |
| ray.init() | ਰੇ ਨੂੰ ਸ਼ੁਰੂ ਵਿੱਚ ਵਿਤਰਿਤ ਪ੍ਰੋਸੈਸਿੰਗ ਲਈ ਕੌਂਫਿਗਰ ਕੀਤਾ ਗਿਆ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਇਹ ਪੈਰਲਲ ਰੋਲਆਉਟ ਵਰਕਰਾਂ ਨੂੰ ਸਿਮੂਲੇਸ਼ਨ ਵਿੱਚ ਕਈ ਏਜੰਟਾਂ ਦਾ ਕੁਸ਼ਲਤਾ ਨਾਲ ਪ੍ਰਬੰਧਨ ਕਰਨ ਦੇ ਯੋਗ ਬਣਾਉਂਦਾ ਹੈ। |
| register_env() | ਰੇ ਦੇ ਨਾਲ ਕਸਟਮ ਜਿਮ ਸੈਟਿੰਗ ਨੂੰ ਰਜਿਸਟਰ ਕਰਦਾ ਹੈ, ਇਸਦੀ ਵਰਤੋਂ ਮਲਟੀ-ਏਜੰਟ ਸਿਖਲਾਈ ਲਈ ਕੀਤੀ ਜਾ ਸਕਦੀ ਹੈ। ਇਹ ਗਾਰੰਟੀ ਦੇਣ ਲਈ ਲੋੜੀਂਦਾ ਹੈ ਕਿ ਸਿਖਲਾਈ ਲੂਪ ਵਿੱਚ ਹੋਣ ਦੌਰਾਨ ਰੇ ਵਾਤਾਵਰਣ ਦੀ ਪਛਾਣ ਕਰਦਾ ਹੈ। |
| algo.train() | ਇਹ ਰੇ ਫਰੇਮਵਰਕ ਦੇ ਅੰਦਰ PPO ਐਲਗੋਰਿਦਮ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਏਜੰਟਾਂ ਦੇ ਸਿਖਲਾਈ ਪੜਾਅ ਦੀ ਸ਼ੁਰੂਆਤ ਕਰਦਾ ਹੈ। ਹਰੇਕ ਦੁਹਰਾਓ ਦੇ ਨਤੀਜੇ ਏਜੰਟ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ ਅਤੇ ਇਨਾਮਾਂ ਬਾਰੇ ਜਾਣਕਾਰੀ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ। |
| rollouts() | ਸਿਖਲਾਈ ਦੌਰਾਨ ਵਰਤਣ ਲਈ ਰੋਲਆਊਟ ਕਰਮਚਾਰੀਆਂ ਦੀ ਸੰਖਿਆ ਨੂੰ ਨਿਸ਼ਚਿਤ ਕਰਦਾ ਹੈ। ਇਸ ਸਥਿਤੀ ਵਿੱਚ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ MAPPO ਸਿਖਲਾਈ ਲਈ ਵਰਕਰਾਂ ਵਿੱਚ ਵਾਤਾਵਰਣ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਵੰਡਿਆ ਗਿਆ ਹੈ. |
| create_env_on_local_worker=True | ਰੇ ਵਿੱਚ ਇੱਕ ਨਾਜ਼ੁਕ ਮਾਪਦੰਡ ਜੋ ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਵਾਤਾਵਰਣ ਇੱਕ ਸਿੰਗਲ ਵਰਕਰ ਲਈ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਤਿਆਰ ਕੀਤਾ ਗਿਆ ਹੈ, ਰੈਂਡਰਿੰਗ ਵਿੰਡੋ 'ਤੇ ਵਧੇਰੇ ਨਿਯੰਤਰਣ ਦੀ ਆਗਿਆ ਦਿੰਦਾ ਹੈ ਅਤੇ ਵਿੰਡੋ ਉਦਾਹਰਨਾਂ ਦੀ ਗਿਣਤੀ ਨੂੰ ਘਟਾਉਂਦਾ ਹੈ। |
| config.build() | PPO ਸੰਰਚਨਾ ਨੂੰ ਸਿਖਲਾਈ ਲਈ ਤਿਆਰ ਐਲਗੋਰਿਦਮ ਵਸਤੂ ਵਿੱਚ ਬਦਲਣ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਵਾਤਾਵਰਣ, ਮਾਡਲ ਬਣਤਰ, ਅਤੇ ਰੋਲਆਉਟਸ ਵਰਗੇ ਸੈੱਟਅੱਪ ਪੈਰਾਮੀਟਰਾਂ ਨੂੰ ਇਕੱਠਾ ਕਰਦਾ ਹੈ। |
ਪਾਈਗੇਮ ਦੇ ਨਾਲ ਰੇ ਵਿੱਚ ਰੈਂਡਰਿੰਗ ਅਤੇ ਸਿਖਲਾਈ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਸਮਝਣਾ
ਪੇਸ਼ ਕੀਤੀਆਂ ਸਕ੍ਰਿਪਟਾਂ ਦਾ ਉਦੇਸ਼ ਰੇਅ ਦੀ ਮਲਟੀ-ਏਜੰਟ ਪ੍ਰੌਕਸੀਮਲ ਪਾਲਿਸੀ ਓਪਟੀਮਾਈਜੇਸ਼ਨ (ਐਮਏਪੀਪੀਓ) ਤਕਨੀਕ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਇੱਕ ਬੇਸਪੋਕ ਜਿਮ ਵਾਤਾਵਰਣ ਨੂੰ ਪੇਸ਼ ਕਰਨ ਵੇਲੇ ਆਈਆਂ ਦੋ ਪ੍ਰਾਇਮਰੀ ਚੁਣੌਤੀਆਂ ਨੂੰ ਹੱਲ ਕਰਨ ਲਈ ਹੈ। ਪਹਿਲਾ ਮੁੱਦਾ ਕਈ ਪਾਈਗੇਮ ਵਿੰਡੋਜ਼ ਨੂੰ ਬਣਾਉਣ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਇਹ ਸੁਨਿਸ਼ਚਿਤ ਕਰਕੇ ਸੰਬੋਧਿਤ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿ PyGame ਡਿਸਪਲੇਅ ਸਿਰਫ ਇੱਕ ਵਾਰ ਸਾਵਧਾਨ ਵਿੰਡੋ ਨਿਰਮਾਣ ਤਰਕ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਸ਼ੁਰੂ ਕੀਤਾ ਗਿਆ ਹੈ। ਅਸੀਂ ਵਰਤਦੇ ਹਾਂ pygame.display.set_mode() ਇੱਕ ਜਾਂਚ ਦੇ ਅੰਦਰ ਫੰਕਸ਼ਨ ਹੈ ਕਿ ਕੀ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਡਿਸਪਲੇਅ ਸ਼ੁਰੂ ਕੀਤਾ ਗਿਆ ਹੈ ਕਿ ਸਿਖਲਾਈ ਦੌਰਾਨ ਸਿਰਫ ਇੱਕ ਵਿੰਡੋ ਬਣਾਈ ਗਈ ਹੈ।
ਦੂਜੀ ਮੁੱਖ ਸਮਰੱਥਾ ਹੈ ਰੈਂਡਰ ਵਿਧੀ, ਜੋ ਹਰ ਸਮੇਂ ਦੌਰਾਨ ਵਾਤਾਵਰਣ ਦੀ ਮੌਜੂਦਾ ਸਥਿਤੀ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। ਵਾਤਾਵਰਣ ਵਿੱਚ ਏਜੰਟ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਦਰਸਾਇਆ ਗਿਆ ਹੈ pygame.draw.circle(), ਉਹਨਾਂ ਦੀ ਸਥਿਤੀ ਅਤੇ ਰੰਗ ਦੇ ਨਾਲ ਉਹਨਾਂ ਦੀ ਸਥਿਤੀ 'ਤੇ ਨਿਰਭਰ ਕਰਦੇ ਹੋਏ ਲਗਾਤਾਰ ਸੋਧਿਆ ਜਾਂਦਾ ਹੈ। ਇਹ ਤੁਹਾਨੂੰ ਇਹ ਦੇਖਣ ਦੀ ਇਜਾਜ਼ਤ ਦਿੰਦਾ ਹੈ ਕਿ ਕਿਹੜੇ ਏਜੰਟ ਫ੍ਰੀਜ਼ ਕੀਤੇ ਗਏ ਹਨ ਅਤੇ ਜੋ ਅਜੇ ਵੀ ਫ੍ਰੀਜ਼-ਟੈਗ ਦ੍ਰਿਸ਼ ਵਿੱਚ ਸਰਗਰਮ ਹਨ। ਦ pygame.display.flip() ਵਿਧੀ ਹਰੇਕ ਰੈਂਡਰਿੰਗ ਪਗ ਤੋਂ ਬਾਅਦ ਡਿਸਪਲੇ ਨੂੰ ਤਾਜ਼ਾ ਕਰਦੀ ਹੈ, ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦੀ ਹੈ ਕਿ ਵਾਤਾਵਰਣ ਏਜੰਟ ਦੀ ਮੌਜੂਦਾ ਸਥਿਤੀ ਨੂੰ ਦਰਸਾਉਂਦਾ ਹੈ।
ਸਕ੍ਰਿਪਟ ਇਹ ਵੀ ਦਰਸਾਉਂਦੀ ਹੈ ਕਿ ਕਸਟਮ ਵਾਤਾਵਰਣ ਨੂੰ ਰੇ ਵਿੱਚ ਕਿਵੇਂ ਸ਼ਾਮਲ ਕਰਨਾ ਹੈ। ਦ env_creator ਫੰਕਸ਼ਨ ਵਾਤਾਵਰਣ ਨੂੰ ਰੇ ਦੁਆਰਾ ਦੁਆਰਾ ਰਜਿਸਟਰ ਕਰਦਾ ਹੈ ਰਜਿਸਟਰ_env() ਫੰਕਸ਼ਨ. ਰੇ ਦੇ ਸਿਖਲਾਈ ਐਲਗੋਰਿਦਮ ਹੁਣ ਕਸਟਮਾਈਜ਼ਡ ਫ੍ਰੀਜ਼-ਟੈਗ ਵਾਤਾਵਰਨ ਨੂੰ ਖੋਜ ਅਤੇ ਵਰਤ ਸਕਦੇ ਹਨ। ਇਸ ਤੋਂ ਇਲਾਵਾ, ਸਕ੍ਰਿਪਟ ਵਰਤਦੀ ਹੈ ray.init() ਰੇ ਨੂੰ ਸਥਾਪਿਤ ਕਰਨ ਅਤੇ ਇਹ ਯਕੀਨੀ ਬਣਾਉਣ ਲਈ ਕਿ ਸਿਖਲਾਈ ਨੂੰ ਕਈ ਕਰਮਚਾਰੀਆਂ ਵਿੱਚ ਵੰਡਿਆ ਜਾ ਸਕਦਾ ਹੈ। ਹਾਲਾਂਕਿ, ਇਸ ਵਿਵਸਥਾ ਵਿੱਚ ਬਹੁਤ ਸਾਰੇ ਕਰਮਚਾਰੀਆਂ ਵਿੱਚ ਵਿੰਡੋ ਰੈਂਡਰਿੰਗ ਨਾਲ ਜੁੜੀ ਜਟਿਲਤਾ ਨੂੰ ਘੱਟ ਕਰਨ ਲਈ ਸਿਰਫ ਇੱਕ ਰੋਲਆਊਟ ਵਰਕਰ ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਜਾਂਦੀ ਹੈ।
ਅੰਤ ਵਿੱਚ, ਸਿਖਲਾਈ ਲੂਪ ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ algo.train() ਫੰਕਸ਼ਨ, ਜੋ ਕਿ ਪ੍ਰਦਾਨ ਕੀਤੇ ਗਏ ਐਪੀਸੋਡਾਂ ਅਤੇ ਸਮੇਂ ਦੇ ਕਦਮਾਂ ਦੀ ਸਿਖਲਾਈ ਪ੍ਰਕਿਰਿਆ ਨੂੰ ਚਲਾਉਂਦਾ ਹੈ। ਹਰੇਕ ਦੁਹਰਾਓ ਦੇ ਨਤੀਜੇ ਏਜੰਟਾਂ ਦੀ ਕਾਰਗੁਜ਼ਾਰੀ 'ਤੇ ਮਹੱਤਵਪੂਰਨ ਫੀਡਬੈਕ ਦਿੰਦੇ ਹਨ, ਜਿਸ ਵਿੱਚ ਮੈਟ੍ਰਿਕਸ ਜਿਵੇਂ ਕਿ ਔਸਤ ਇਨਾਮ ਅਤੇ ਕੁੱਲ ਨੁਕਸਾਨ ਸ਼ਾਮਲ ਹਨ। ਸੈਟਿੰਗਾਂ ਨੂੰ ਵਿਵਸਥਿਤ ਕਰਨਾ ਜਿਵੇਂ ਕਿ rollout_fragment_length ਅਤੇ ਟ੍ਰੇਨ_ਬੈਚ_ਆਕਾਰ ਸਿਖਲਾਈ ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਸੁਧਾਰ ਕਰ ਸਕਦਾ ਹੈ. ਇਹ ਸਕ੍ਰਿਪਟ ਮਾਡਿਊਲਰ ਅਤੇ ਅਨੁਕੂਲ ਹੈ, ਇਸਲਈ ਇਸਨੂੰ ਰੇ ਅਤੇ ਪਾਈਗੇਮ ਨੂੰ ਸ਼ਾਮਲ ਕਰਨ ਵਾਲੀਆਂ ਕਈ ਤਰ੍ਹਾਂ ਦੀਆਂ ਮਲਟੀ-ਏਜੰਟ ਰੀਨਫੋਰਸਮੈਂਟ ਸਿੱਖਣ ਦੀਆਂ ਸਮੱਸਿਆਵਾਂ ਲਈ ਵਰਤਿਆ ਜਾ ਸਕਦਾ ਹੈ।
ਕਈ ਪਾਈਗੇਮ ਵਿੰਡੋਜ਼ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ ਅਤੇ ਰੇ ਦੇ MAPPO ਸੈਟਅਪ ਵਿੱਚ ਰੈਂਡਰਿੰਗ ਵਿੱਚ ਸੁਧਾਰ ਕਰਨਾ।
ਪਹੁੰਚ 1: Python, PyGame ਅਤੇ Ray's MAPPO ਨਾਲ ਵਿੰਡੋ ਪ੍ਰਬੰਧਨ 'ਤੇ ਧਿਆਨ ਕੇਂਦਰਿਤ ਕਰਦਾ ਹੈ।
import pygamefrom ray import init, shutdownfrom ray.rllib.algorithms.ppo import PPOConfigfrom ray.tune.registry import register_envdef render(self):if not hasattr(self, 'initialized') or not self.initialized:pygame.display.set_mode([1000, 1000]) # Prevent multiple windowsself.initialized = Trueself.screen.fill((255, 255, 255))for agent in self.all_agents:color = agent.color if agent.status == 1 else (0, 255, 255)pygame.draw.circle(self.screen, color, (agent.x, agent.y), agent.size)pygame.display.flip()def env_creator(config):return MyCustomEnv(screen=pygame.display.get_surface()) # Use existing displayregister_env("Env_FTP", env_creator)def train_and_evaluate(time_steps):init(ignore_reinit_error=True)config = PPOConfig().environment("Env_FTP").rollouts(num_rollout_workers=1)algo = config.build()for _ in range(episodes):results = algo.train()shutdown()
ਰੇ ਦੇ ਨਾਲ ਪਾਈਗੇਮ ਵਿੱਚ ਰੈਂਡਰਿੰਗ ਨੂੰ ਅਨੁਕੂਲਿਤ ਕਰਨਾ ਅਤੇ ਕਈ ਏਜੰਟਾਂ ਨੂੰ ਸੰਭਾਲਣਾ
ਪਹੁੰਚ 2: ਪਾਇਥਨ ਅਤੇ ਰੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਾਤਾਵਰਣ ਨੂੰ ਮਾਡਿਊਲਰਾਈਜ਼ ਕਰਨਾ ਅਤੇ ਰੈਂਡਰ ਤਰਕ ਨੂੰ ਵੱਖ ਕਰਨਾ
import rayfrom ray.rllib.algorithms.ppo import PPOConfigimport pygameclass EnvWithRendering:def __init__(self, screen, agents, adversaries, time_steps):self.screen = screenself.agents = agentsself.adversaries = adversariesself.time_steps = time_stepsdef render(self):pygame.init()self.screen.fill((255, 255, 255))for agent in self.agents:color = agent.color if agent.status == 1 else (0, 255, 255)pygame.draw.circle(self.screen, color, (agent.x, agent.y), agent.size)pygame.display.update()def env_creator(config):return EnvWithRendering(pygame.display.set_mode([1000, 1000]), 5, 2, 500)ray.init()register_env("Env_FTP", env_creator)config = PPOConfig().rollouts(num_rollout_workers=1)algo = config.build()algo.train()
ਸਹੀ ਵਾਤਾਵਰਣ ਰੈਂਡਰਿੰਗ ਦੇ ਨਾਲ ਰੇ ਦੀ ਮਲਟੀ-ਏਜੰਟ ਸਿਖਲਾਈ ਨੂੰ ਵਧਾਉਣਾ
ਰੇ ਦੇ MAPPO ਨੂੰ ਇੱਕ ਬੇਸਪੋਕ ਵਾਤਾਵਰਨ ਵਿੱਚ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਢੰਗ ਨਾਲ ਏਕੀਕ੍ਰਿਤ ਕਰਨ ਦਾ ਇੱਕ ਮਹੱਤਵਪੂਰਨ ਹਿੱਸਾ ਇਹ ਯਕੀਨੀ ਬਣਾ ਰਿਹਾ ਹੈ ਕਿ ਰੈਂਡਰਿੰਗ ਅਤੇ ਏਜੰਟ ਪ੍ਰਬੰਧਨ ਨਿਰਦੋਸ਼ ਤੌਰ 'ਤੇ ਇਕੱਠੇ ਕੰਮ ਕਰਦੇ ਹਨ। ਫ੍ਰੀਜ਼-ਟੈਗ ਵਰਗੇ ਮਲਟੀ-ਏਜੰਟ ਦ੍ਰਿਸ਼ ਵਿੱਚ, ਵਿਜ਼ੂਅਲ ਇਨਪੁਟ ਡੀਬੱਗਿੰਗ ਅਤੇ ਏਜੰਟ ਗਤੀਵਿਧੀ ਨੂੰ ਦੇਖਣ ਲਈ ਮਹੱਤਵਪੂਰਨ ਹੈ। ਰੈਂਡਰਿੰਗ ਵਿੱਚ ਮੁੱਖ ਮੁਸ਼ਕਲ ਅਕਸਰ ਇਸ ਨਾਲ ਜੁੜੀ ਹੁੰਦੀ ਹੈ ਕਿ ਸਿਖਲਾਈ ਦੌਰਾਨ ਪਾਈਗੇਮ ਵਿੰਡੋਜ਼ ਨੂੰ ਕਿਵੇਂ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਕਈ ਵਿੰਡੋਜ਼ ਨੂੰ ਖੋਲ੍ਹਣ ਤੋਂ ਰੋਕਣ ਲਈ, ਇੱਕ ਵਿਹਾਰਕ ਤਰੀਕਾ ਹੈ ਸ਼ਰਤੀਆ ਜਾਂਚਾਂ ਦੇ ਨਾਲ ਪਾਈਗੇਮ ਵਿੰਡੋ ਦੇ ਸਟਾਰਟਅਪ ਦਾ ਪ੍ਰਬੰਧਨ ਕਰਨਾ। ਇਹ ਗਾਰੰਟੀ ਦਿੰਦਾ ਹੈ ਕਿ ਵਾਤਾਵਰਣ ਸਹੀ ਢੰਗ ਨਾਲ ਅਤੇ ਬਹੁਤ ਜ਼ਿਆਦਾ ਓਵਰਹੈੱਡ ਤੋਂ ਬਿਨਾਂ ਪੇਸ਼ ਕਰਦਾ ਹੈ।
ਇੱਕ ਹੋਰ ਮੁੱਖ ਵਿਚਾਰ ਇਹ ਹੈ ਕਿ ਏਜੰਟਾਂ ਦੇ ਵਿਵਹਾਰ ਨੂੰ ਸਿਮੂਲੇਸ਼ਨ ਵਿੱਚ ਕਿਵੇਂ ਸ਼ਾਮਲ ਕੀਤਾ ਜਾਂਦਾ ਹੈ। ਰੇ ਦੇ ਰੋਲਆਉਟ ਇਹ ਨਿਰਧਾਰਿਤ ਕਰਦੇ ਹਨ ਕਿ ਕਿਵੇਂ ਵੱਖ-ਵੱਖ ਟਾਈਮਸਟੈਪਸ ਤੋਂ ਅਨੁਭਵ ਇਕੱਠੇ ਕੀਤੇ ਜਾਂਦੇ ਹਨ ਅਤੇ ਏਜੰਟਾਂ ਨੂੰ ਸਿੱਖਿਆ ਦੇਣ ਲਈ ਵਰਤੇ ਜਾਂਦੇ ਹਨ। ਜਦੋਂ ਹਰੇਕ ਏਜੰਟ ਕੋਈ ਕਾਰਵਾਈ ਕਰਦਾ ਹੈ, ਤਾਂ ਪ੍ਰਤੀਨਿਧਤਾ ਉਹਨਾਂ ਦੀਆਂ ਨਵੀਆਂ ਸਥਿਤੀਆਂ ਅਤੇ ਸਥਿਤੀਆਂ ਨੂੰ ਦਰਸਾਉਂਦੀ ਹੈ। ਪਾਈਗੇਮ ਦੀ pygame.display.flip() ਕਮਾਂਡ ਇੱਥੇ ਬਹੁਤ ਜ਼ਰੂਰੀ ਹੈ ਕਿਉਂਕਿ ਇਹ ਅਸਲ-ਸਮੇਂ ਵਿੱਚ ਸਕ੍ਰੀਨ ਨੂੰ ਬਦਲਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਅਸੀਂ ਸਾਰੇ ਸਿਮੂਲੇਸ਼ਨ ਦੌਰਾਨ ਸਾਰੇ ਏਜੰਟਾਂ ਦੀਆਂ ਗਤੀ ਅਤੇ ਸਥਿਤੀਆਂ ਨੂੰ ਟਰੈਕ ਕਰ ਸਕਦੇ ਹਾਂ।
ਪ੍ਰਕਿਰਿਆ ਵਿੱਚ ਇੱਕ ਹੋਰ ਮੁੱਖ ਕਦਮ ਰੇ ਅਤੇ ਪਾਈਗੇਮ ਦੇ ਵਿਚਕਾਰ ਇੰਟਰਫੇਸ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣਾ ਹੈ। ਵਿਤਰਿਤ ਗਣਨਾਵਾਂ ਨੂੰ ਸੰਭਾਲਣ ਲਈ ਰੇ ਦੀ ਸਮਰੱਥਾ ਪ੍ਰਭਾਵਸ਼ਾਲੀ ਹੈ, ਪਰ ਇਸ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਪ੍ਰਬੰਧਿਤ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਜਦੋਂ ਉਹਨਾਂ ਸੰਦਰਭਾਂ ਵਿੱਚ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ ਜਿਹਨਾਂ ਨੂੰ ਵਿਜ਼ੂਅਲ ਰੈਂਡਰਿੰਗ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਰੇ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋਏ ਬਣਾਓ_env_on_local_worker ਦਲੀਲ, ਵਾਤਾਵਰਣ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਪੇਸ਼ਕਾਰੀ ਕਰਨ ਵਾਲੇ ਕਰਮਚਾਰੀ 'ਤੇ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਕਈ ਵਰਕਰਾਂ ਨੂੰ ਖੁੱਲੀਆਂ ਵਿੰਡੋਜ਼ ਲਈ ਮੁਕਾਬਲਾ ਕਰਨ ਤੋਂ ਰੋਕਦਾ ਹੈ। ਵਿਤਰਿਤ ਸਿੱਖਣ ਅਤੇ ਸਹੀ ਰੈਂਡਰਿੰਗ ਦਾ ਇਹ ਮਿਸ਼ਰਨ ਇੱਕ ਸਫਲ ਸਿਮੂਲੇਸ਼ਨ ਵਿੱਚ ਨਤੀਜਾ ਦਿੰਦਾ ਹੈ ਜਿਸ ਨੂੰ ਇੱਕ ਵਾਰ ਵਿੱਚ ਕਈ ਏਜੰਟਾਂ ਨੂੰ ਸਿਖਾਉਣ ਲਈ ਆਸਾਨੀ ਨਾਲ ਫੈਲਾਇਆ ਜਾ ਸਕਦਾ ਹੈ।
ਮਲਟੀ-ਏਜੰਟ ਵਾਤਾਵਰਨ ਵਿੱਚ ਰੇ ਅਤੇ ਪਾਈਗੇਮ ਰੈਂਡਰਿੰਗ ਬਾਰੇ ਅਕਸਰ ਪੁੱਛੇ ਜਾਂਦੇ ਸਵਾਲ
- ਮੈਂ ਮਲਟੀਪਲ ਪਾਈਗੇਮ ਵਿੰਡੋਜ਼ ਨੂੰ ਖੋਲ੍ਹਣ ਤੋਂ ਕਿਵੇਂ ਰੋਕਾਂ?
- ਮਲਟੀਪਲ ਸ਼ੁਰੂਆਤਾਂ ਤੋਂ ਬਚਣ ਲਈ, ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਇੱਕ ਸ਼ਰਤੀਆ ਜਾਂਚ ਦੀ ਵਰਤੋਂ ਕਰੋ pygame.display.set_mode().
- ਦੀ ਭੂਮਿਕਾ ਕੀ ਹੈ rollouts ਰੇ ਵਿੱਚ?
- ਰੋਲਆਉਟ ਵਾਤਾਵਰਣ ਨਾਲ ਏਜੰਟ ਦੇ ਪਰਸਪਰ ਪ੍ਰਭਾਵ ਤੋਂ ਡੇਟਾ ਨੂੰ ਕੈਪਚਰ ਅਤੇ ਬਰਕਰਾਰ ਰੱਖਦੇ ਹਨ, ਜੋ ਬਾਅਦ ਵਿੱਚ ਸਿਖਲਾਈ ਦੌਰਾਨ ਨੀਤੀ ਨੂੰ ਅਪਡੇਟ ਕਰਨ ਲਈ ਵਰਤਿਆ ਜਾਂਦਾ ਹੈ।
- ਕਿਵੇਂ ਕਰਦਾ ਹੈ pygame.display.flip() ਕੰਮ?
- ਇਹ ਕਮਾਂਡ ਪਾਈਗੇਮ ਵਿੰਡੋ ਨੂੰ ਵਾਤਾਵਰਣ ਦੀ ਮੌਜੂਦਾ ਸਥਿਤੀ, ਏਜੰਟਾਂ ਦੀਆਂ ਸਥਿਤੀਆਂ ਅਤੇ ਕਾਰਵਾਈਆਂ ਸਮੇਤ ਤਾਜ਼ਾ ਕਰਦੀ ਹੈ।
- ਕੀ ਰੇ ਰੈਂਡਰਿੰਗ ਅਤੇ ਸਿਖਲਾਈ ਦੋਵਾਂ ਨੂੰ ਇੱਕੋ ਸਮੇਂ ਸੰਭਾਲ ਸਕਦਾ ਹੈ?
- ਰੇ ਦੋਵਾਂ ਨੂੰ ਸੰਭਾਲ ਸਕਦਾ ਹੈ, ਪਰ create_env_on_local_worker ਸਹੀ ਰੈਂਡਰਿੰਗ ਲਈ ਸਥਾਨਕ ਤੌਰ 'ਤੇ ਵਾਤਾਵਰਣ ਬਣਾਉਂਦਾ ਹੈ।
- ਰੇ ਸਿਖਲਾਈ ਵਿੱਚ ਪਾਈਗੇਮ ਵਿੰਡੋ ਨੂੰ ਕੰਟਰੋਲ ਕਰਨਾ ਮਹੱਤਵਪੂਰਨ ਕਿਉਂ ਹੈ?
- ਵਿੰਡੋ ਅਰੰਭਕਰਨ 'ਤੇ ਨਿਯੰਤਰਣ ਦੇ ਬਿਨਾਂ, ਬਹੁਤ ਸਾਰੀਆਂ ਵਿੰਡੋਜ਼ ਖੁੱਲ੍ਹ ਸਕਦੀਆਂ ਹਨ, ਪ੍ਰਦਰਸ਼ਨ ਸੰਬੰਧੀ ਚਿੰਤਾਵਾਂ ਪੈਦਾ ਕਰਦੀਆਂ ਹਨ ਅਤੇ ਏਜੰਟ ਵਿਵਹਾਰ ਨੂੰ ਦੇਖਣਾ ਅਸੰਭਵ ਬਣਾਉਂਦੀਆਂ ਹਨ।
ਰੇ ਅਤੇ ਪਾਈਗੇਮ ਰੈਂਡਰਿੰਗ ਮੁੱਦਿਆਂ ਨੂੰ ਹੱਲ ਕਰਨਾ
ਅੰਤ ਵਿੱਚ, ਰੇ ਦੇ ਨਾਲ ਇੱਕ ਮਲਟੀ-ਏਜੰਟ ਪਾਈਗੇਮ ਸੰਦਰਭ ਵਿੱਚ ਰੈਂਡਰਿੰਗ ਮੁੱਦਿਆਂ ਨਾਲ ਨਜਿੱਠਣ ਲਈ ਵਿੰਡੋ ਪ੍ਰਬੰਧਨ ਨੂੰ ਅਨੁਕੂਲ ਬਣਾਉਣ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ। ਇਹ ਯਕੀਨੀ ਬਣਾਉਂਦਾ ਹੈ ਕਿ ਰੈਂਡਰਿੰਗ ਪ੍ਰਕਿਰਿਆ ਪਾਈਗੇਮ ਵਿੰਡੋ ਦੀਆਂ ਕਈ ਉਦਾਹਰਨਾਂ ਦੀ ਲੋੜ ਤੋਂ ਬਿਨਾਂ ਸੁਚਾਰੂ ਢੰਗ ਨਾਲ ਚੱਲਦੀ ਹੈ। ਵਾਤਾਵਰਣ ਅਤੇ ਮਾਪਦੰਡਾਂ ਦੀ ਧਿਆਨ ਨਾਲ ਸੰਰਚਨਾ ਦੀ ਲੋੜ ਹੈ।
ਰੇ ਦੇ ਰੋਲਆਊਟ ਵਰਕਰਾਂ ਨੂੰ ਸਹੀ ਢੰਗ ਨਾਲ ਕੌਂਫਿਗਰ ਕਰਕੇ ਅਤੇ ਵਾਤਾਵਰਣ ਕਿਵੇਂ ਪੈਦਾ ਹੁੰਦਾ ਹੈ ਨੂੰ ਬਦਲ ਕੇ, ਅਸੀਂ ਕੁਸ਼ਲ ਸਿਖਲਾਈ ਅਤੇ ਸਹੀ ਰੈਂਡਰਿੰਗ ਦੋਵੇਂ ਪ੍ਰਾਪਤ ਕਰਦੇ ਹਾਂ। ਇਹ ਹੱਲ ਰੇਅ ਦੀਆਂ ਵੰਡੀਆਂ ਸਿੱਖਣ ਦੀਆਂ ਸਮਰੱਥਾਵਾਂ ਦਾ ਫਾਇਦਾ ਉਠਾਉਂਦੇ ਹੋਏ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਫ੍ਰੀਜ਼-ਟੈਗ ਦ੍ਰਿਸ਼ ਨੂੰ ਬਿਹਤਰ ਢੰਗ ਨਾਲ ਦੇਖਣ ਅਤੇ ਡੀਬੱਗ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਦੇ ਕੇ ਸਿਮੂਲੇਸ਼ਨ ਗਤੀ ਨੂੰ ਬਿਹਤਰ ਬਣਾਉਂਦਾ ਹੈ।
ਰੇ ਅਤੇ ਪਾਈਗੇਮ ਏਕੀਕਰਣ ਲਈ ਹਵਾਲੇ ਅਤੇ ਸਰੋਤ
- ਮਲਟੀ-ਏਜੰਟ ਸਿਖਲਾਈ ਲਈ Ray's RLlib ਦੀ ਵਰਤੋਂ ਕਰਨ ਬਾਰੇ ਵਿਸਤ੍ਰਿਤ ਦਸਤਾਵੇਜ਼ਾਂ ਲਈ: ਰੇ RLlib ਦਸਤਾਵੇਜ਼ੀ
- ਪਾਈਗੇਮ ਦੇ ਰੈਂਡਰਿੰਗ ਫੰਕਸ਼ਨਾਂ ਅਤੇ ਮਲਟੀਪਲ ਵਿੰਡੋਜ਼ ਨੂੰ ਸੰਭਾਲਣ ਬਾਰੇ ਜਾਣਕਾਰੀ: ਪਾਈਗੇਮ ਡਿਸਪਲੇ ਦਸਤਾਵੇਜ਼
- ਰੇ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਵਿਤਰਿਤ ਸਿਖਲਾਈ ਲਈ ਉੱਨਤ PPO ਸੰਰਚਨਾ: ਰੇ PPO ਕੌਂਫਿਗਰੇਸ਼ਨ ਗਾਈਡ
- ਰੇ ਦੇ ਨਾਲ ਜਿਮ ਵਾਤਾਵਰਣ ਨੂੰ ਏਕੀਕ੍ਰਿਤ ਕਰਨ ਲਈ ਸਰੋਤ ਕੋਡ ਦੀਆਂ ਉਦਾਹਰਣਾਂ: ਰੇ GitHub ਰਿਪੋਜ਼ਟਰੀ