File size: 13,882 Bytes
753dcca
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
{
    "policy_class": {
        ":type:": "<class 'abc.ABCMeta'>",
        ":serialized:": "gAWVOwAAAAAAAACMIXN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbi5wb2xpY2llc5SMEUFjdG9yQ3JpdGljUG9saWN5lJOULg==",
        "__module__": "stable_baselines3.common.policies",
        "__doc__": "\n    Policy class for actor-critic algorithms (has both policy and value prediction).\n    Used by A2C, PPO and the likes.\n\n    :param observation_space: Observation space\n    :param action_space: Action space\n    :param lr_schedule: Learning rate schedule (could be constant)\n    :param net_arch: The specification of the policy and value networks.\n    :param activation_fn: Activation function\n    :param ortho_init: Whether to use or not orthogonal initialization\n    :param use_sde: Whether to use State Dependent Exploration or not\n    :param log_std_init: Initial value for the log standard deviation\n    :param full_std: Whether to use (n_features x n_actions) parameters\n        for the std instead of only (n_features,) when using gSDE\n    :param use_expln: Use ``expln()`` function instead of ``exp()`` to ensure\n        a positive standard deviation (cf paper). It allows to keep variance\n        above zero and prevent it from growing too fast. In practice, ``exp()`` is usually enough.\n    :param squash_output: Whether to squash the output using a tanh function,\n        this allows to ensure boundaries when using gSDE.\n    :param features_extractor_class: Features extractor to use.\n    :param features_extractor_kwargs: Keyword arguments\n        to pass to the features extractor.\n    :param share_features_extractor: If True, the features extractor is shared between the policy and value networks.\n    :param normalize_images: Whether to normalize images or not,\n         dividing by 255.0 (True by default)\n    :param optimizer_class: The optimizer to use,\n        ``th.optim.Adam`` by default\n    :param optimizer_kwargs: Additional keyword arguments,\n        excluding the learning rate, to pass to the optimizer\n    ",
        "__init__": "<function ActorCriticPolicy.__init__ at 0x7eb05557ff40>",
        "_get_constructor_parameters": "<function ActorCriticPolicy._get_constructor_parameters at 0x7eb055588040>",
        "reset_noise": "<function ActorCriticPolicy.reset_noise at 0x7eb0555880d0>",
        "_build_mlp_extractor": "<function ActorCriticPolicy._build_mlp_extractor at 0x7eb055588160>",
        "_build": "<function ActorCriticPolicy._build at 0x7eb0555881f0>",
        "forward": "<function ActorCriticPolicy.forward at 0x7eb055588280>",
        "extract_features": "<function ActorCriticPolicy.extract_features at 0x7eb055588310>",
        "_get_action_dist_from_latent": "<function ActorCriticPolicy._get_action_dist_from_latent at 0x7eb0555883a0>",
        "_predict": "<function ActorCriticPolicy._predict at 0x7eb055588430>",
        "evaluate_actions": "<function ActorCriticPolicy.evaluate_actions at 0x7eb0555884c0>",
        "get_distribution": "<function ActorCriticPolicy.get_distribution at 0x7eb055588550>",
        "predict_values": "<function ActorCriticPolicy.predict_values at 0x7eb0555885e0>",
        "__abstractmethods__": "frozenset()",
        "_abc_impl": "<_abc._abc_data object at 0x7eb05557afc0>"
    },
    "verbose": 1,
    "policy_kwargs": {},
    "num_timesteps": 1000448,
    "_total_timesteps": 1000000,
    "_num_timesteps_at_start": 0,
    "seed": null,
    "action_noise": null,
    "start_time": 1730983497630467439,
    "learning_rate": 0.0003,
    "tensorboard_log": null,
    "_last_obs": {
        ":type:": "<class 'numpy.ndarray'>",
        ":serialized:": "gAWVlQAAAAAAAACMEm51bXB5LmNvcmUubnVtZXJpY5SMC19mcm9tYnVmZmVylJOUKJYgAAAAAAAAANoEsr2IocA+Xa0TPh/yG76KKPA83vfuPQAAAAAAAAAAlIwFbnVtcHmUjAVkdHlwZZSTlIwCZjSUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9LAHSUYksBSwiGlIwBQ5R0lFKULg=="
    },
    "_last_episode_starts": {
        ":type:": "<class 'numpy.ndarray'>",
        ":serialized:": "gAWVdAAAAAAAAACMEm51bXB5LmNvcmUubnVtZXJpY5SMC19mcm9tYnVmZmVylJOUKJYBAAAAAAAAAACUjAVudW1weZSMBWR0eXBllJOUjAJiMZSJiIeUUpQoSwOMAXyUTk5OSv////9K/////0sAdJRiSwGFlIwBQ5R0lFKULg=="
    },
    "_last_original_obs": null,
    "_episode_num": 0,
    "use_sde": false,
    "sde_sample_freq": -1,
    "_current_progress_remaining": -0.00044800000000000395,
    "_stats_window_size": 100,
    "ep_info_buffer": {
        ":type:": "<class 'collections.deque'>",
        ":serialized:": "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"
    },
    "ep_success_buffer": {
        ":type:": "<class 'collections.deque'>",
        ":serialized:": "gAWVIAAAAAAAAACMC2NvbGxlY3Rpb25zlIwFZGVxdWWUk5QpS2SGlFKULg=="
    },
    "_n_updates": 3908,
    "observation_space": {
        ":type:": "<class 'gymnasium.spaces.box.Box'>",
        ":serialized:": "gAWVOQMAAAAAAACMFGd5bW5hc2l1bS5zcGFjZXMuYm94lIwDQm94lJOUKYGUfZQojAVkdHlwZZSMBW51bXB5lIwFZHR5cGWUk5SMAmY0lImIh5RSlChLA4wBPJROTk5K/////0r/////SwB0lGKMDWJvdW5kZWRfYmVsb3eUjBJudW1weS5jb3JlLm51bWVyaWOUjAtfZnJvbWJ1ZmZlcpSTlCiWCAAAAAAAAAABAQEBAQEBAZRoCIwCYjGUiYiHlFKUKEsDjAF8lE5OTkr/////Sv////9LAHSUYksIhZSMAUOUdJRSlIwNYm91bmRlZF9hYm92ZZRoESiWCAAAAAAAAAABAQEBAQEBAZRoFUsIhZRoGXSUUpSMBl9zaGFwZZRLCIWUjANsb3eUaBEoliAAAAAAAAAAAAC0wgAAtMIAAKDAAACgwNsPScAAAKDAAAAAgAAAAICUaAtLCIWUaBl0lFKUjARoaWdolGgRKJYgAAAAAAAAAAAAtEIAALRCAACgQAAAoEDbD0lAAACgQAAAgD8AAIA/lGgLSwiFlGgZdJRSlIwIbG93X3JlcHKUjFtbLTkwLiAgICAgICAgLTkwLiAgICAgICAgIC01LiAgICAgICAgIC01LiAgICAgICAgIC0zLjE0MTU5MjcgIC01LgogIC0wLiAgICAgICAgIC0wLiAgICAgICBdlIwJaGlnaF9yZXBylIxTWzkwLiAgICAgICAgOTAuICAgICAgICAgNS4gICAgICAgICA1LiAgICAgICAgIDMuMTQxNTkyNyAgNS4KICAxLiAgICAgICAgIDEuICAgICAgIF2UjApfbnBfcmFuZG9tlIwUbnVtcHkucmFuZG9tLl9waWNrbGWUjBBfX2dlbmVyYXRvcl9jdG9ylJOUjAVQQ0c2NJRoMowUX19iaXRfZ2VuZXJhdG9yX2N0b3KUk5SGlFKUfZQojA1iaXRfZ2VuZXJhdG9ylIwFUENHNjSUjAVzdGF0ZZR9lChoPYoQ6SEA30RVaO6BrDJe5SqVQYwDaW5jlIoQUdQEw7aej9Nk9OZoZUktUHWMCmhhc191aW50MzKUSwCMCHVpbnRlZ2VylEsAdWJ1Yi4=",
        "dtype": "float32",
        "bounded_below": "[ True  True  True  True  True  True  True  True]",
        "bounded_above": "[ True  True  True  True  True  True  True  True]",
        "_shape": [
            8
        ],
        "low": "[-90.        -90.         -5.         -5.         -3.1415927  -5.\n  -0.         -0.       ]",
        "high": "[90.        90.         5.         5.         3.1415927  5.\n  1.         1.       ]",
        "low_repr": "[-90.        -90.         -5.         -5.         -3.1415927  -5.\n  -0.         -0.       ]",
        "high_repr": "[90.        90.         5.         5.         3.1415927  5.\n  1.         1.       ]",
        "_np_random": "Generator(PCG64)"
    },
    "action_space": {
        ":type:": "<class 'gymnasium.spaces.discrete.Discrete'>",
        ":serialized:": "gAWVowEAAAAAAACMGWd5bW5hc2l1bS5zcGFjZXMuZGlzY3JldGWUjAhEaXNjcmV0ZZSTlCmBlH2UKIwBbpSMFW51bXB5LmNvcmUubXVsdGlhcnJheZSMBnNjYWxhcpSTlIwFbnVtcHmUjAVkdHlwZZSTlIwCaTiUiYiHlFKUKEsDjAE8lE5OTkr/////Sv////9LAHSUYkMIBAAAAAAAAACUhpRSlIwFc3RhcnSUaAhoDkMIAAAAAAAAAACUhpRSlIwGX3NoYXBllCmMBWR0eXBllGgOjApfbnBfcmFuZG9tlIwUbnVtcHkucmFuZG9tLl9waWNrbGWUjBBfX2dlbmVyYXRvcl9jdG9ylJOUjAVQQ0c2NJRoG4wUX19iaXRfZ2VuZXJhdG9yX2N0b3KUk5SGlFKUfZQojA1iaXRfZ2VuZXJhdG9ylIwFUENHNjSUjAVzdGF0ZZR9lChoJooR3+3GbEKuKSQWcryTgNcSmQCMA2luY5SKEY9GVzsKbosMoWZ+hUaCQMMAdYwKaGFzX3VpbnQzMpRLAYwIdWludGVnZXKUSn/q/Qt1YnViLg==",
        "n": "4",
        "start": "0",
        "_shape": [],
        "dtype": "int64",
        "_np_random": "Generator(PCG64)"
    },
    "n_envs": 1,
    "n_steps": 1024,
    "gamma": 0.999,
    "gae_lambda": 0.98,
    "ent_coef": 0.01,
    "vf_coef": 0.5,
    "max_grad_norm": 0.5,
    "batch_size": 64,
    "n_epochs": 4,
    "clip_range": {
        ":type:": "<class 'function'>",
        ":serialized:": "gAWVrQIAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLAUsTQwSIAFMAlE6FlCmMAV+UhZSMSS91c3IvbG9jYWwvbGliL3B5dGhvbjMuMTAvZGlzdC1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUjARmdW5jlEuEQwIEAZSMA3ZhbJSFlCl0lFKUfZQojAtfX3BhY2thZ2VfX5SMGHN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbpSMCF9fbmFtZV9flIwec3RhYmxlX2Jhc2VsaW5lczMuY29tbW9uLnV0aWxzlIwIX19maWxlX1+UjEkvdXNyL2xvY2FsL2xpYi9weXRob24zLjEwL2Rpc3QtcGFja2FnZXMvc3RhYmxlX2Jhc2VsaW5lczMvY29tbW9uL3V0aWxzLnB5lHVOTmgAjBBfbWFrZV9lbXB0eV9jZWxslJOUKVKUhZR0lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgffZR9lChoFowEZnVuY5SMDF9fcXVhbG5hbWVfX5SMGWNvbnN0YW50X2ZuLjxsb2NhbHM+LmZ1bmOUjA9fX2Fubm90YXRpb25zX1+UfZSMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgXjAdfX2RvY19flE6MC19fY2xvc3VyZV9flGgAjApfbWFrZV9jZWxslJOURz/JmZmZmZmahZRSlIWUjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZR1hpSGUjAu"
    },
    "clip_range_vf": null,
    "normalize_advantage": true,
    "target_kl": null,
    "lr_schedule": {
        ":type:": "<class 'function'>",
        ":serialized:": "gAWVrQIAAAAAAACMF2Nsb3VkcGlja2xlLmNsb3VkcGlja2xllIwOX21ha2VfZnVuY3Rpb26Uk5QoaACMDV9idWlsdGluX3R5cGWUk5SMCENvZGVUeXBllIWUUpQoSwFLAEsASwFLAUsTQwSIAFMAlE6FlCmMAV+UhZSMSS91c3IvbG9jYWwvbGliL3B5dGhvbjMuMTAvZGlzdC1wYWNrYWdlcy9zdGFibGVfYmFzZWxpbmVzMy9jb21tb24vdXRpbHMucHmUjARmdW5jlEuEQwIEAZSMA3ZhbJSFlCl0lFKUfZQojAtfX3BhY2thZ2VfX5SMGHN0YWJsZV9iYXNlbGluZXMzLmNvbW1vbpSMCF9fbmFtZV9flIwec3RhYmxlX2Jhc2VsaW5lczMuY29tbW9uLnV0aWxzlIwIX19maWxlX1+UjEkvdXNyL2xvY2FsL2xpYi9weXRob24zLjEwL2Rpc3QtcGFja2FnZXMvc3RhYmxlX2Jhc2VsaW5lczMvY29tbW9uL3V0aWxzLnB5lHVOTmgAjBBfbWFrZV9lbXB0eV9jZWxslJOUKVKUhZR0lFKUaACMEl9mdW5jdGlvbl9zZXRzdGF0ZZSTlGgffZR9lChoFowEZnVuY5SMDF9fcXVhbG5hbWVfX5SMGWNvbnN0YW50X2ZuLjxsb2NhbHM+LmZ1bmOUjA9fX2Fubm90YXRpb25zX1+UfZSMDl9fa3dkZWZhdWx0c19flE6MDF9fZGVmYXVsdHNfX5ROjApfX21vZHVsZV9flGgXjAdfX2RvY19flE6MC19fY2xvc3VyZV9flGgAjApfbWFrZV9jZWxslJOURz8zqSowVTJhhZRSlIWUjBdfY2xvdWRwaWNrbGVfc3VibW9kdWxlc5RdlIwLX19nbG9iYWxzX1+UfZR1hpSGUjAu"
    }
}