diff --git a/docs/source/api/algorithms/mo/index.rst b/docs/source/api/algorithms/mo/index.rst index 00e275a4..88a5f25b 100644 --- a/docs/source/api/algorithms/mo/index.rst +++ b/docs/source/api/algorithms/mo/index.rst @@ -8,4 +8,5 @@ Multi-objective ibea moead nsga2 + nsga3 rvea \ No newline at end of file diff --git a/docs/source/api/algorithms/mo/nsga3.rst b/docs/source/api/algorithms/mo/nsga3.rst new file mode 100644 index 00000000..4c217a1e --- /dev/null +++ b/docs/source/api/algorithms/mo/nsga3.rst @@ -0,0 +1,7 @@ +======== +NSGA-III +======== + +.. autoclass:: evox.algorithms.NSGA3 + :members: + :inherited-members: \ No newline at end of file diff --git a/docs/source/api/monitors/evoxvis.rst b/docs/source/api/monitors/evoxvis.rst new file mode 100644 index 00000000..c27aa854 --- /dev/null +++ b/docs/source/api/monitors/evoxvis.rst @@ -0,0 +1,7 @@ +=============== +EvoXVis Monitor +=============== + +.. autoclass:: evox.monitors.EvoXVisMonitor + :members: + :inherited-members: diff --git a/docs/source/api/monitors/index.rst b/docs/source/api/monitors/index.rst new file mode 100644 index 00000000..20e9cff1 --- /dev/null +++ b/docs/source/api/monitors/index.rst @@ -0,0 +1,10 @@ +======== +Monitors +======== + +.. toctree:: + :maxdepth: 1 + + std_so + std_mo + evoxvis \ No newline at end of file diff --git a/docs/source/api/monitors/std_mo.rst b/docs/source/api/monitors/std_mo.rst new file mode 100644 index 00000000..0f7269f6 --- /dev/null +++ b/docs/source/api/monitors/std_mo.rst @@ -0,0 +1,7 @@ +================================ +Standard Multi-objective Monitor +================================ + +.. autoclass:: evox.monitors.StdMOMonitor + :members: + :inherited-members: diff --git a/docs/source/api/monitors/std_so.rst b/docs/source/api/monitors/std_so.rst new file mode 100644 index 00000000..629db297 --- /dev/null +++ b/docs/source/api/monitors/std_so.rst @@ -0,0 +1,7 @@ +================================= +Standard Single-objective Monitor +================================= + +.. autoclass:: evox.monitors.StdSOMonitor + :members: + :inherited-members: diff --git a/docs/source/api/pipelines/distributed.rst b/docs/source/api/pipelines/distributed.rst index a37d1f0a..a6221803 100644 --- a/docs/source/api/pipelines/distributed.rst +++ b/docs/source/api/pipelines/distributed.rst @@ -1,7 +1,7 @@ -==================== -Distributed Pipeline -==================== +============================== +Ray-based Distributed Workflow +============================== -.. autoclass:: evox.pipelines.DistributedPipeline +.. autoclass:: evox.pipelines.RayDistributedWorkflow :members: :inherited-members: diff --git a/docs/source/api/pipelines/index.rst b/docs/source/api/pipelines/index.rst index 5708fc94..5e1c8a2b 100644 --- a/docs/source/api/pipelines/index.rst +++ b/docs/source/api/pipelines/index.rst @@ -6,4 +6,5 @@ Pipelines :maxdepth: 1 standard - distributed \ No newline at end of file + distributed + uni \ No newline at end of file diff --git a/docs/source/api/pipelines/uni.rst b/docs/source/api/pipelines/uni.rst new file mode 100644 index 00000000..57f497ff --- /dev/null +++ b/docs/source/api/pipelines/uni.rst @@ -0,0 +1,7 @@ +================== +Universal Workflow +================== + +.. autoclass:: evox.pipelines.UniWorkflow + :members: + :inherited-members: diff --git a/docs/source/api/problems/classic/dtlz.rst b/docs/source/api/problems/classic/dtlz.rst new file mode 100644 index 00000000..385cd319 --- /dev/null +++ b/docs/source/api/problems/classic/dtlz.rst @@ -0,0 +1,43 @@ +=========== +DTLZ Family +=========== + +.. autoclass:: evox.problems.classic.DTLZ + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ1 + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ2 + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ3 + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ4 + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ5 + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ6 + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ7 + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ8 + :members: + :inherited-members: + +.. autoclass:: evox.problems.classic.DTLZ9 + :members: + :inherited-members: diff --git a/docs/source/api/problems/classic/griewank.rst b/docs/source/api/problems/classic/griewank.rst new file mode 100644 index 00000000..a672c782 --- /dev/null +++ b/docs/source/api/problems/classic/griewank.rst @@ -0,0 +1,7 @@ +======== +Griewank +======== + +.. autoclass:: evox.problems.classic.Griewank + :members: + :inherited-members: diff --git a/docs/source/api/problems/classic/index.rst b/docs/source/api/problems/classic/index.rst index e58b32a5..b4aa7f8c 100644 --- a/docs/source/api/problems/classic/index.rst +++ b/docs/source/api/problems/classic/index.rst @@ -6,5 +6,9 @@ Numerical Benchmarks :maxdepth: 1 ackley + dtlz + griewank + rastrigin + rosenbrock sphere zdt \ No newline at end of file diff --git a/docs/source/api/problems/classic/rastrigin.rst b/docs/source/api/problems/classic/rastrigin.rst new file mode 100644 index 00000000..5177fa12 --- /dev/null +++ b/docs/source/api/problems/classic/rastrigin.rst @@ -0,0 +1,7 @@ +========= +Rastrigin +========= + +.. autoclass:: evox.problems.classic.Rastrigin + :members: + :inherited-members: diff --git a/docs/source/api/problems/classic/rosenbrock.rst b/docs/source/api/problems/classic/rosenbrock.rst new file mode 100644 index 00000000..c70e2de9 --- /dev/null +++ b/docs/source/api/problems/classic/rosenbrock.rst @@ -0,0 +1,7 @@ +========== +Rosenbrock +========== + +.. autoclass:: evox.problems.classic.Rosenbrock + :members: + :inherited-members: diff --git a/docs/source/api/problems/rl/brax.rst b/docs/source/api/problems/rl/brax.rst new file mode 100644 index 00000000..842ca9ff --- /dev/null +++ b/docs/source/api/problems/rl/brax.rst @@ -0,0 +1,7 @@ +================== +Brax-based Problem +================== + +.. autoclass:: evox.problems.rl.Brax + :members: + :inherited-members: diff --git a/docs/source/api/problems/rl/index.rst b/docs/source/api/problems/rl/index.rst index 67e52ddf..1cd36aef 100644 --- a/docs/source/api/problems/rl/index.rst +++ b/docs/source/api/problems/rl/index.rst @@ -5,4 +5,5 @@ RL .. toctree:: :maxdepth: 1 - gym \ No newline at end of file + brax + gym diff --git a/docs/source/conf.py b/docs/source/conf.py index e92668fa..4d8bb95a 100644 --- a/docs/source/conf.py +++ b/docs/source/conf.py @@ -49,6 +49,7 @@ # mock these modules, so we can build the document without these dependencies. autodoc_mock_imports = [ + "brax", "chex", "gym", "ray", diff --git a/src/evox/monitors/std_mo_monitor.py b/src/evox/monitors/std_mo_monitor.py index bcdda6b7..d4a78d5d 100644 --- a/src/evox/monitors/std_mo_monitor.py +++ b/src/evox/monitors/std_mo_monitor.py @@ -9,6 +9,7 @@ class StdMOMonitor: """Standard multi-objective monitor Used for multi-objective workflow, can monitor fitness and record the pareto front. + Parameters ---------- record_pf @@ -74,4 +75,4 @@ def flush(self): hcb.barrier_wait() def close(self): - self.flush() \ No newline at end of file + self.flush() diff --git a/src/evox/problems/rl/brax.py b/src/evox/problems/rl/brax.py index ef6e1067..9c84bff9 100644 --- a/src/evox/problems/rl/brax.py +++ b/src/evox/problems/rl/brax.py @@ -19,6 +19,24 @@ def __init__( cap_episode: int, fitness_is_neg_reward: bool = True, ): + """Contruct a brax-based problem + + Parameters + ---------- + policy + A function that accept two arguments + the first one is the parameter and the second is the input. + env_name + The environment name. + batch_size + The number of brax environments to run in parallel. + Usually this should match the population size at the algorithm side. + cap_episode + The maximum number episodes to run. + fitness_is_neg_reward + Whether to return the fitness value as the negative of reward or not. + Default to True. + """ self.batched_policy = jit(vmap(policy)) self.env = envs.wrappers.VmapWrapper(envs.create(env_name=env_name)) self.batch_size = batch_size